我想我已经接近了,但我在这里遗漏了一些东西
我真的想在我的WPF项目中扩展我的XAML知识并整理我的代码。
我有一种情况,我希望根据另一个控件的状态填充组合框的项目。
我有一种风格,我可以检查复选框的值:
<Style
x:Key="{x:Type ComboBox}"
TargetType="{x:Type ComboBox}">
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=SomeCheckBox, Path=IsChecked}"
Value="True">
这似乎允许我触发盒子的价值。
我现在想弄清楚如何设置我的二传手
似乎没有办法访问items属性...
这就是我一直在搞乱的地方:
<Setter
Property="Items">
<Setter.Value>
<ComboBoxItem Content="SomeValue" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
但很明显,它不会起作用
有没有办法使用setter来做到这一点?
我是否需要提出某些列表或列表,我将其存放在窗口资源中并用作项目源?
我将如何制作该清单?
答案 0 :(得分:2)
基于另一个控件的状态
在将复选框IsChecked
绑定到属性之后,我会在VM后面的代码中执行此操作,同时还将ComboBox绑定到基于 public bool IsOperationChecked // Bound to the checkbox
{
get { return _IsOperationChecked; }
set {
_IsOperationChecked= value;
OnPropertyChanged("IsOperationChecked");
Names = (value) ? new List<string>() {"alpha", "beta"} :
new List<string>() {"Bill", "Frank"};
}
}
public List<string> Names // Bound to the Combobox
{
get { return _Names; }
set { _Names = value; OnPropertyChanged("Names"); }
}
的值更改的列表。
这是一个简单的例子:
xml_gettext
答案 1 :(得分:1)
使用资源中声明的数组:
<Window.Resources>
<x:Array Type="sys:String"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
x:Key="MyArray">
<sys:String>One</sys:String>
<sys:String>Two</sys:String>
</x:Array>
</Window.Resources>
...
<Style x:Key="{x:Type ComboBox}"
TargetType="{x:Type ComboBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=SomeCheckBox, Path=IsChecked}" Value="True">
<Setter Property="ItemsSource" Value="{StaticResource MyArray}" />
</DataTrigger>
</Style.Triggers>
</Style>