C# 使用指定控件设置数据绑定的样式

C# 使用指定控件设置数据绑定的样式,c#,.net,wpf,xaml,styles,C#,.net,Wpf,Xaml,Styles,我想创建一个样式作为窗口资源,该样式需要绑定到指定控件中的属性。下面是它的简化示例 创建按钮样式,并使用指定的按钮控件标记属性应用背景颜色 <Window.Resources> <Style x:Key="TestingStyle" TargetType="Button"> <Setter Property="Background" Value="{Binding Tag}" /> </Style> </Win

我想创建一个
样式
作为窗口资源,该样式需要绑定到指定控件中的属性。下面是它的简化示例

创建按钮样式,并使用指定的按钮控件标记属性应用
背景
颜色

<Window.Resources>
    <Style x:Key="TestingStyle" TargetType="Button">
        <Setter Property="Background" Value="{Binding Tag}" />
    </Style>
</Window.Resources>

是的,这是可能的,但是您必须绑定到RelativeSource,并且可能必须创建一个转换器将对象转换为颜色,这是因为标记存储的是对象而不是颜色, 下面是添加相对源的示例

 <Setter Property="Background" Value="{Binding Path=Tag, RelativeSource={RelativeSource Self}}}" />

是的,这是可能的,但是您必须绑定到RelativeSource,并且可能必须创建一个转换器将对象转换为颜色,这是因为标记存储的是对象而不是颜色, 下面是添加相对源的示例

 <Setter Property="Background" Value="{Binding Path=Tag, RelativeSource={RelativeSource Self}}}" />
试试这个,也许:

<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Tag}" />

尝试以下方法:

<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Tag}" />


听起来像是一个解决方案,但不起作用。可能是我弄错了。你能看看问题中的编辑吗?感谢直到不起作用(风格不适用)。谢谢你给我指明方向。嗯,另一个思想点标记本身就是一个UIElement,不是吗?因此,当您使用上面的方法查找父对象时,它会找到PointMarker,因此请尝试添加“Path=Parent.SeriesColor”change“AncestorType={x:Type Chart:PointMarker}”,我现在只是在钓鱼,我不知道ChartSeries是什么,所以我只是继续我预期的情况。抱歉,仍然没有运气。谢谢你告诉我方向。我会调查的。哦,那太糟糕了:/不用担心:)好运:)听起来像是个解决办法,但没用。可能是我弄错了。你能看看问题中的编辑吗?感谢直到不起作用(风格不适用)。谢谢你给我指明方向。嗯,另一个思想点标记本身就是一个UIElement,不是吗?因此,当您使用上面的方法查找父对象时,它会找到PointMarker,因此请尝试添加“Path=Parent.SeriesColor”change“AncestorType={x:Type Chart:PointMarker}”,我现在只是在钓鱼,我不知道ChartSeries是什么,所以我只是继续我预期的情况。抱歉,仍然没有运气。谢谢你告诉我方向。我会调查的。哦,那太糟糕了:/不用担心:)好运:)发生了什么事,它只是一个工作还是崩溃了?什么是序列颜色,它是ChartSeries的属性吗??因为如果是这样的话,那么相对资源本身就不一定起作用。检查我下面的答案,添加一些内容到it@Heinrich:当我应用此样式时,它不会做任何事情(不会崩溃)。@Heinrich:SeriesColor是ChartSeries的一个属性。只是在你调用的一个旁注上:发生了什么,它只是一个工作还是崩溃了?什么是SeriesColor,它是ChartSeries的一个属性??因为如果是这样的话,那么相对资源本身就不一定起作用。检查我下面的答案,添加一些内容到it@Heinrich:当我应用此样式时,它不会做任何事情(不会崩溃)。@Heinrich:SeriesColor是ChartSeries的一个属性。只是在您调用的旁注上: