C# 基于特性值更改样式
在主窗口的C# 基于特性值更改样式,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,在主窗口的画布上,我正在画一些传感器 我创建了“传感器”类 公共类传感器 { 公共int Id_Sens{get;set;} 公共int类型{get;set;} 公共UIElement Ui_元素{get;set;} } 通过编程,我创建了一个具有两列的网格(一个宽度和高度相同的矩形(->变为正方形),第一列采用以下样式,第二列采用标签)。我将此网格与Ui\u元素(Ui\u元素=gridMain)关联 这个很好用 根据属性Type的值,我想更改矩形的半径(并画一个圆) 我创建了以下XAML
画布上,我正在画一些传感器
我创建了“传感器”类
公共类传感器
{
公共int Id_Sens{get;set;}
公共int类型{get;set;}
公共UIElement Ui_元素{get;set;}
}
通过编程,我创建了一个具有两列的网格
(一个宽度和高度相同的矩形
(->变为正方形),第一列采用以下样式,第二列采用标签
)。我将此网格
与Ui\u元素
(Ui\u元素
=gridMain
)关联
这个很好用
根据属性Type
的值,我想更改矩形的半径(并画一个圆)
我创建了以下XAML
如何将类传感器的属性类型绑定到触发器
编辑
我用EldHasp的第1点和第3点解决了问题,我可能无法给出准确的答案,因为原始问题中没有足够的细节
您在窗口中显示的元素记录在属性public UIElement Ui\u element
?
如果是,则将属性类型更改为公共FrameworkElement Ui\u Element
,因为样式和DataContext属性是在FrameworkElement而不是UIElement上定义的
如果它是一个更窄的类型(例如,它始终是示例中的形状),那么最好指定这个更窄的类型
如果您显示的样式是Ui_元素属性中元素的样式,则将传感器传递到此元素的数据上下文就足够了。
示例:sensor.Ui\u Element.DataContext=sensor代码>
您在Sharpe上创建UI元素是非常徒劳的。
WPF的核心语言是XAML。在非常罕见、相当困难的情况下,值得使用Sharp。
在大多数情况下,XAML解决方案比Sharpe更简单、更典型、更容易理解。
在您的情况下,您应该创建一个不带Ui_元素属性的传感器集合。
为传感器创建一个模板选择器,该选择器将通过“类型”属性设置其视觉外观。
在XAML中,为此集合设置ItemsControl并为其提供模板选择器。
此外,还有其他几个典型的WPF实现
您拥有的代码对于将属性绑定到DataTrigger
来说似乎是正确的。但是矩形不是圆,所以不清楚为什么要在没有这些属性的对象上设置RadiusX
和RadiusY
值。请通过提供一个适当的、详细的解释来改进您的问题,说明该代码的作用,它与您想要的有什么不同,以及您具体需要什么帮助。我忘了告诉您矩形的宽度和高度相同(因此它是正方形)如果我设置RadiusX=60 e RadiusY=60,它将成为WPF中的一个圆。如果我强制设置这些值,它将绘制圆。问题是绑定是针对数据上下文的属性创建的。但从您的解释来看,不清楚您是如何创建UI元素、如何放置它们、它们的数据上下文是什么、它与原始传感器的收集有何关联。在问题的解释中添加详细信息。