Napotkałem sytuację, w której byłoby bardzo użyteczne określenie wartości zmiennoprzecinkowej bezpośrednio w XAML i użycie jej jako zasobu dla kilku moich elementów UI. Po przeszukiwaniu znalazłem sporo informacji o tym, jak dołączyć odpowiedni zestaw (mscorlib) do twojego XAML, abyś mógł to zrobić.Używanie typów systemów w XAML jako zasobów
Niestety, otrzymuję wyjątek w jednym przypadku, gdy próbuję to zrobić. Oto następujące XAML, który odtwarza sytuację:
<Window x:Class="davidtestapp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<core:Double x:Key="MyDouble">120</core:Double>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource MyDouble}" />
<ColumnDefinition Width="40" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Fill="Red" />
<Rectangle Grid.Column="1" Fill="Green" />
<Rectangle Grid.Column="2" Fill="Blue" />
</Grid>
</Window>
Gdy próbuję skompilować i uruchomić ten, otrzymuję XamlParseException rzucony na mnie, która mówi, że „«120»nie jest prawidłową wartością dla własności«width» ".
Ale właściwość "Szerokość" to podwójne, więc dlaczego nie mogę ustawić go za pomocą zdefiniowanego StaticResource? Czy ktoś wie, jak to zrobić?
Dzięki! Zadziałało. To bardzo pomaga. Nie zdawałem sobie sprawy, że był to typ GridLength. – David