gpt4 book ai didi

c# - 如何在 DataGridTextColumn 上使用 MultiBinding?

转载 作者:行者123 更新时间:2023-11-30 19:24:47 24 4
gpt4 key购买 nike

我的 ImageDimension 对象上有 HeightWidth 两个属性,我想将它们绑定(bind)在一起,以便显示 50x60(中间有一个 x 字符)?我怎样才能做到这一点?下面的代码给我一个错误说

"Object reference not set to an object instance."

<cst:CustomDataGrid x:Name="grdImageDimension"  
ItemsSource="{Binding ImageDimensions, IsAsync=True}"
<DataGridTextColumn Header="ImageDimension" Width="50">
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0} + {1}">
<Binding Path="ImageDimensions.Height" />
<Binding Path="ImageDimensions.Width" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</cst:CustomDataGrid>

View 模型:

Public Class ImageDimensionsVM

Private m_ImageDimensions As ObservableCollection(Of ImageDimension)
Public Property ImageDimensions() As ObservableCollection(Of ImageDimension)
Get
Return m_ImageDimensions
End Get
Set(value As ObservableCollection(Of ImageDimension))
m_ImageDimensions = value
End Set
End Property

最佳答案

如果您想将数据绑定(bind)到 ImageDimension 对象的属性,只需像@Giangregorio 指出的那样直接使用它们:

<Window x:Class="DataGridTextHeightWidth.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<DataGrid x:Name="grdImageDimension" ItemsSource="{Binding
ImageDimensions, IsAsync=True}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn x:Name="MyGridColumn"
Header="ImageDimension"
Width="*">
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0} x {1}">
<Binding Path="Height" />
<Binding Path="Width" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

代码隐藏:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

// Create list
MyImageDimensionCol col = new MyImageDimensionCol();
col.ImageDimensions = new ObservableCollection<ImageDimension>();
col.ImageDimensions.Add(new ImageDimension() { Height = 5, Width = 10 });
col.ImageDimensions.Add(new ImageDimension() { Height = 15, Width = 20 });
col.ImageDimensions.Add(new ImageDimension() { Height = 5, Width = 5 });
DataContext = col;
}
}

public class MyImageDimensionCol
{
public ObservableCollection<ImageDimension> ImageDimensions { get; set; }
}

public class ImageDimension
{
public int Height { get; set; }
public int Width { get; set; }
}

关于c# - 如何在 DataGridTextColumn 上使用 MultiBinding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33236644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com