我工作的一个WPF应用程序,并选择用户控制数据模板目前我已绑定到我的视图模型ObservableCollection
的ItemsControl
和我有一个使用UserControl
上呈现canvas
项目一DataTemplate
。您可以使用多个用户控件,然后根据Enum
切换使用哪一个?另一种查看方法是根据Enum
为ObservableCollection
中的项目创建Button
或TextBox
。基于一个枚举
Q
基于一个枚举
1
A
回答
2
您可以使用自定义DataTemplateSelector
选择项目的数据模板。假设我们有以下几点:然后
public enum Kind
{
Button, TextBox,
}
public class Data
{
public Kind Kind { get; set; }
public string Value { get; set; }
}
你的数据模板选择可能是这样的:
public class MyTemplateSelector : DataTemplateSelector
{
public DataTemplate ButtonTemplate { get; set; }
public DataTemplate TextBoxTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
Data data = (Data)item;
switch (data.Kind)
{
case Kind.Button:
return ButtonTemplate;
case Kind.TextBox:
return TextBoxTemplate;
}
return base.SelectTemplate(item, container);
}
}
在XAML中,申报模板,所有要覆盖的情况下,在这种情况下按钮和文本框:
<Window.Resources>
<ResourceDictionary>
<DataTemplate x:Key="ButtonTemplate" DataType="local:Data">
<Button Content="{Binding Value}" />
</DataTemplate>
<DataTemplate x:Key="TextBoxTemplate" DataType="local:Data">
<TextBox Text="{Binding Value}" />
</DataTemplate>
</ResourceDictionary>
</Window.Resources>
最后,有你ItemsControl
创建自定义模板选择的一个实例,从一个初始化它的两个DataTemplate
性质波夫数据模板:
<ItemsControl>
<ItemsControl.ItemTemplateSelector>
<local:MyTemplateSelector
ButtonTemplate="{StaticResource ButtonTemplate}"
TextBoxTemplate="{StaticResource TextBoxTemplate}"/>
</ItemsControl.ItemTemplateSelector>
<ItemsControl.Items>
<local:Data Kind="Button" Value="1. Button" />
<local:Data Kind="TextBox" Value="2. TextBox" />
<local:Data Kind="TextBox" Value="3. TextBox" />
<local:Data Kind="Button" Value="4. Button" />
</ItemsControl.Items>
</ItemsControl>
(在现实生活中,设置ItemsSource
而非内联宣布的项目,像我一样的。)
出于完整性:要访问你的C#类,你需要设置的命名空间,例如,
xmlns:local="clr-namespace:WPF"
+0
梦幻般的回应真的很有帮助。我已经与UserControls合作,这是我的最终目标,非常感谢。 – Grenter
+0
很高兴帮助! –
相关问题
- 1. 设置基于国家枚举一个子状态枚举
- 2. 基于枚举创建枚举类别
- 3. 获取基于枚举值
- 4. 基于2枚举的多个permuations
- 5. C#:基于不同枚举类型的枚举值返回枚举值
- 6. 基于常规枚举的jaxb枚举 - unmarshall问题
- 7. 枚举一个NSMutableDictionary难以排除基于键的对象
- 8. 基于枚举模板是一个好主意吗?
- 9. 是否有一个雨燕的基于字符串的枚举?
- 10. 使用基于枚举值的函数?
- 11. 基于枚举选择控件
- 12. 基于测试Condtional上枚举
- 13. 基于枚举构造对象
- 14. 基于长值设置枚举集
- 15. 基于枚举输入的返回类
- 16. C#:创建基于积分枚举值
- 17. 使用基于整数的枚举
- 18. 春天 - 动态厂基于枚举
- 19. 基于枚举的绑定属性
- 20. 填充设置基于布尔枚举
- 21. 基于枚举属性过滤NSMutableArray
- 22. 基于附加值获取枚举?
- 23. 基于前值的X宏枚举
- 24. 基于枚举值的屏幕ComboBoxModel
- 25. XAML基于枚举 - Xamarin形式
- 26. Ninject基于枚举数返回实现
- 27. 枚举基于安全审计
- 28. 爪哇retainAll基于枚举值
- 29. 变量指向一个枚举或另一个枚举?
- 30. 地图一个枚举另一个枚举
我是否正确理解您想要基于'Enum'值而不是'ViewModel'来更改'UserControl'? – StepUp