【问题标题】:How can I return a stackpanel element from a ValueConverter and get it to display properly如何从 ValueConverter 返回 stackpanel 元素并使其正确显示
【发布时间】:2017-06-05 22:44:54
【问题描述】:

我有一个要绑定的数据网格,并且我有一个 valueConverter,我向它发送一个对象,希望返回一个带有一些文本的图像(放在堆栈面板中)。但是,在显示所有我在 gridview 单元格中看到的是 System.Windows.Control.StackPanel。

这里是 xaml。我正确绑定了 GrieView ItemsSource 并且进入转换器的值是正确的。

<telerik:GridViewDataColumn DataMemberBinding="{Binding Converter={StaticResource MyConverter}}" IsReadOnly="True">
 <telerik:GridViewDataColumn.Header>
  <TextBlock FontWeight="Bold" Text="Text" />
 </telerik:GridViewDataColumn.Header>
</telerik:GridViewDataColumn>

这基本上正是转换器所做的。

StackPanel stackpanel = new StackPanel();
stackpanel.Orientation = Orientation.Horizontal;
stackpanel.Children.Add(Adds a UI element);

TextBlock textBlock = new TextBlock();
textBlock.Text = appendingText;
stackpanel.Children.Add(textBlock);
return stackpanel;

但在 gridviewCell 中显示的只是一个读取 System.Windows.Controls.StackPanel 的字符串。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • GridViewDataColumn 不知道如何将 StackPanel 解释为“数据”,而只是调用其 ToString 方法。您可能应该使用带有适当 CellTemplate 的基本 GridViewColumn。

标签: wpf data-binding ivalueconverter


【解决方案1】:

尝试使用GridViewColumn 并使用转换器绑定ContentControlContent 属性:

<telerik:GridViewColumn IsReadOnly="True">
    <telerik:GridViewColumn.Header>
        <TextBlock FontWeight="Bold" Text="Text" />
    </telerik:GridViewColumn.Header>
    <telerik:GridViewColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Converter={StaticResource MyConverter}}" />
        </DataTemplate>
    </telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2012-07-31
    • 1970-01-01
    • 2020-10-22
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多