gpt4 book ai didi

wpf - 绑定(bind)到 WPF GridView 中的 SelectedItems 总和

转载 作者:行者123 更新时间:2023-12-02 09:01:05 25 4
gpt4 key购买 nike

我有一个 GridView,其中包含文件列表、创建日期和文件大小。在网格下方,我有一个文本 block ,上面写着“X Files Selected.Y MB”。我可以很好地绑定(bind)到 SelectedItems.Count,但是我可以轻松绑定(bind)到所选文件大小的总和吗?

下面的问号应该是 SelectedItems fileSize 列值的总和。有什么想法吗?

<TextBlock HorizontalAlignment="Right">
<TextBlock.Text>
<MultiBinding StringFormat=" {0} Files Selected. {1} MB">
<Binding ElementName="FilesList" Path="SelectedItems.Count"></Binding>
<Binding ElementName="FilesList" Path="SelectedItems.?????"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>

我知道我可以在代码隐藏中完成此操作 - 但我希望将代码隐藏保留为空并在 XAML 中完成。这是代码隐藏代码:

private void FilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
double x = 0;

foreach (FileInfo fileInfo in FilesList.SelectedItems)
{
x += fileInfo.Length;
}
}

最佳答案

为此,您必须使用转换器。一个例子:XAML:




<MultiBinding StringFormat=" {0} Files Selected. {1} MB">
<Binding ElementName="FilesList" Path="SelectedItems.Count"></Binding>
<Binding ElementName="FilesList" Path="SelectedItems" Converter="{StaticResource sumconverter}"></Binding>
</MultiBinding>

隐藏代码:


[ValueConversion(typeof(ListViewItem[]), typeof(string))]
class SumConverter : IValueConverter {
public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) {
int size = 0;
ListViewItem[] items = (ListViewItem[])value;
if(items != null){
foreach(var lvi in items){
Someclass sc = lvi.content as Someclass;
if(sc!=null){
size += sc.Size;
}
}
}
return (size / 1000) + "MB";
}

public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture ) {
return null;
}
}

关于wpf - 绑定(bind)到 WPF GridView 中的 SelectedItems 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1208176/

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