#wpf #combobox #datatrigger
#wpf #выпадающий список #datatrigger
Вопрос:
У меня есть выпадающий список WPF, привязанный к коллекции List<Users>
. Я применил DataTemplate для отображения первого имени с помощью текстового блока, и это работает, как ожидалось:
<ComboBox Margin="5" ItemsSource="{Binding Path=TheUsers}" Name="cboUsers">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="10" Text="{Binding Path=FirstName}">
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>`
У меня есть элемент в моем пользовательском классе с именем isActive, который является логическим значением. Если true, то я хочу установить для переднего плана текстового блока значение Navy.
Я потратил так много времени на то, что должно быть так просто, и просмотрел весь Веб, но в большинстве статей говорится об изменении общего цвета или привязке к другому элементу в xaml.
Я попытался реализовать DataTrigger и через час удалил код, потому что он не работал. Он не распознал бы имя моего поля. Есть ли у кого-нибудь очень простое руководство о том, как это сделать или какой подход был бы наилучшим?
Ответ №1:
Поскольку вы, очевидно, в конце концов, имеете дело не с полями, этот стиль должен делать то, что вы хотите:
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive}" Value="True">
<Setter Property="Foreground" Value="Navy"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
Он не распознал бы имя моего поля.
Вы не можете привязываться к полям, конец истории.
Комментарии:
1. Спасибо за это, но должен быть способ сделать это. Есть ли другой способ, которым я могу условно изменить цвет элемента на основе значения в элементе, привязанном к элементу выпадающего списка?
2. Почему бы не сделать это общедоступным свойством, если оно должно быть общедоступным?
3. Извините. Я довольно новичок в Wpf и .NET, хотя программирую уже 188 год. Я думаю, что у меня может быть некоторая терминология, которая здесь неверна. Список объектов пользовательского класса предоставляет свойство, вызывающее FirstName и являющееся активным. Они оба общедоступны вместе со многими другими. Мне нужно получить доступ к этим свойствам. Я никогда не использую наборы данных или поля in.NET. Это грязно. Помогает ли это?
4. Блестяще — я добираюсь туда, хотя для меня это должно быть просто. Это сработало отлично.