Я имею контроль WPF ListView, содержащий много средств управления RadioButton с помощью привязки данных. Я хотел бы, чтобы первый RadioButton в группе был проверен по умолчанию, предпочтительно установлен в XAML, а не программно, но не сумел достигнуть этого.
Мой XAML для управления:
<ListView ItemsSource="{Binding OptionsSortedByKey}" >
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type Logging:FilterOptionsRadioListViewModel}">
<RadioButton Content="{Binding Value}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Свойством OptionsSortedByKey является SortedList.
Я сделал это неуклюже путем установки свойства IsChecked управления RadioButton в событии Loaded:
var button = sender as RadioButton;
if (button != null)
{
if (button.Content.ToString().ToUpperInvariant() == "ALL")
{
button.IsChecked = true;
}
}
Я далеко предпочел бы делать это через привязку данных в XAML. Существует ли простой путь?
Вы можете:
<RadioButton IsChecked="{Binding RelativeSource={PreviousData}, Converter={StaticResource NullAsTrueConverter}}"/>
Где преобразователь возвращает истину
, если значение равно null
.
Тем не менее, подход на основе MVVM сделает это несложно. Вы просто:
<RadioButton IsChecked="{Binding IsChecked}"/>
И тогда ваша основная модель представления установит IsChecked
в true
для первой дочерней модели представления в коллекции.