Как я могу установить XAML для первого WPF RadioButton в элементе управления ListView, который будет проверяться по умолчанию? - PullRequest
4 голосов
/ 14 июля 2010

У меня есть элемент управления 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.Есть ли простой способ?

1 Ответ

7 голосов
/ 14 июля 2010

Вы могли бы:

<RadioButton IsChecked="{Binding RelativeSource={PreviousData}, Converter={StaticResource NullAsTrueConverter}}"/>

Где преобразователь возвращает true, если значение null.

Тем не менее, подход на основе MVVM сделает это совсем несложно. Вы бы просто:

<RadioButton IsChecked="{Binding IsChecked}"/>

И тогда ваша основная модель представления установит IsChecked в true для первой дочерней модели представления в коллекции.

...