Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# WPF:通过绑定获取对象(从转换器获得)属性_C#_Wpf_Xaml_Binding_Converter - Fatal编程技术网

C# WPF:通过绑定获取对象(从转换器获得)属性

C# WPF:通过绑定获取对象(从转换器获得)属性,c#,wpf,xaml,binding,converter,C#,Wpf,Xaml,Binding,Converter,我有这样的情况:我有一个枚举,我正在创建一个数据网格,它由基于该枚举的每个值的行组成 我将枚举值作为字符串传递给一些定制的转换器,它工作正常 然而,在这种情况下,我希望使用转换器返回一个对象并绑定它的属性,而不是对象本身。 实际上,我是通过converter参数来实现的,但问题是,对于设计人员来说,这是行不通的 下面是一些代码: XAML: 我想知道的是,是否有更好的方法来做到这一点,并在设计时看到它。 我想通过转换器返回对象本身(ButtonMacro),并在绑定中访问它的属性,比如Path=

我有这样的情况:我有一个枚举,我正在创建一个数据网格,它由基于该枚举的每个值的行组成

我将枚举值作为字符串传递给一些定制的转换器,它工作正常

然而,在这种情况下,我希望使用转换器返回一个对象并绑定它的属性,而不是对象本身。 实际上,我是通过converter参数来实现的,但问题是,对于设计人员来说,这是行不通的

下面是一些代码:

XAML:

我想知道的是,是否有更好的方法来做到这一点,并在设计时看到它。 我想通过转换器返回对象本身(ButtonMacro),并在绑定中访问它的属性,比如Path=Comments(这是ButtonMacro的属性)

例如:

<DataGridTextColumn Header="Comments" Binding="{Binding Converter={specializedconverters:ButtonToButtonMacroConverter}, Path=Comments, Mode=OneWay}" Width="*" />

这样的事情可能吗

更新1:

<TextBlock Text="{Binding Source={Binding Converter={specializedconverters:ButtonToButtonMacroConverter}, Mode=OneWay}, Converter={converters:ObjectToStringConverter}}" />


可以这样做吗?

在这种情况下,我建议使用DataGridTemplateColumn:

    <DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid1" Width="200">
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Tag="{Binding Path=MyBrush, Converter={StaticResource myBrushConverter}}" 
                                       Text="{Binding RelativeSource={RelativeSource Self}, Path=Tag.Color}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>


MyBrushConverter返回SolidColorBrush。DataGridTextColumn没有Tag属性。

它工作得很好,但是我不得不使用Tag属性,还有其他可能的方法吗?(顺便说一下,解决方案还可以)
<TextBlock Text="{Binding Source={Binding Converter={specializedconverters:ButtonToButtonMacroConverter}, Mode=OneWay}, Converter={converters:ObjectToStringConverter}}" />
    <DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid1" Width="200">
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Tag="{Binding Path=MyBrush, Converter={StaticResource myBrushConverter}}" 
                                       Text="{Binding RelativeSource={RelativeSource Self}, Path=Tag.Color}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>