Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于特性值更改样式_C#_Wpf_Xaml_Data Binding - Fatal编程技术网

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元素、如何放置它们、它们的数据上下文是什么、它与原始传感器的收集有何关联。在问题的解释中添加详细信息。