C# 文本框/复选框的数据触发器类型/
我有一个ItemsControl,其中显示不同的属性和值,一边是名称,另一边是文本框。ItemsSource是自定义类的对象集合,具有名称、值和PropertyType属性(使用反射propertyinfo) 现在我想通过检测属性是否为bool类型来改进这一点,例如,它将显示一个复选框而不是一个文本框。这是否可能使用DataTrigger 我使用一个控件使其半工作,我根据类型将模板设置为文本框或复选框,但当我尝试将“tab”设置为下一个文本框或复选框时,它会首先聚焦具有文本框/复选框的控件,只有在另一个“tab”之后,它才会聚焦包含文本框/复选框的控件C# 文本框/复选框的数据触发器类型/,c#,wpf,reflection,datatrigger,C#,Wpf,Reflection,Datatrigger,我有一个ItemsControl,其中显示不同的属性和值,一边是名称,另一边是文本框。ItemsSource是自定义类的对象集合,具有名称、值和PropertyType属性(使用反射propertyinfo) 现在我想通过检测属性是否为bool类型来改进这一点,例如,它将显示一个复选框而不是一个文本框。这是否可能使用DataTrigger 我使用一个控件使其半工作,我根据类型将模板设置为文本框或复选框,但当我尝试将“tab”设置为下一个文本框或复选框时,它会首先聚焦具有文本框/复选框的控件,只有
因此,如果有人知道这方面的解决方案,我们将不胜感激 您可以使用DataTemplate根据值属性类型选择不同的视图 视图:
使用您已有的解决方案,并将错误获取选项卡焦点的控件的属性设置为false。我最近遇到了一个类似的问题,我想在控件中显示一个文本框(如果bool为false),在控件中显示一个文本块(如果bool为true)。我把文本框和文本块都放在我想显示的地方。然后,我将每个的Visible属性绑定到布尔值。如果你认为这是你的sltn,我可以发布代码。这正是我想要的,我怎么可能没有看到这么简单的东西。非常感谢!:)
<ItemsControl ItemsSource="{Binding Path=Options}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataTemplate.Resources>
<DataTemplate DataType="{x:Type System:Boolean}">
<CheckBox IsChecked="{Binding Path=.}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type System:String}">
<TextBox Text="{Binding Path=.}"/>
</DataTemplate>
</DataTemplate.Resources>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name, Mode=OneWay}"/>
<ContentControl Content="{Binding Path=Value}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
public class MainViewModel
{
public ArrayList Options { get; set; }
public MainViewModel()
{
Options = new ArrayList();
Options.Add(new TextProperty());
Options.Add(new BoolProperty());
}
}
public class TextProperty
{
public string Name { get; set; }
public string Value { get; set; }
public TextProperty()
{
Name = "Name";
Value = "Default";
}
}
public class BoolProperty
{
public string Name { get; set; }
public bool Value { get; set; }
public BoolProperty()
{
Name = "IsEnabled";
Value = true;
}
}