下面的XAML基本上是尝试创建一个Buttons 列表(从当前集合中Name对象的属性呈现).ViewsDataContext
当我单击按钮时,CurrentItem属性CollectionViewSource应该更改,关联View应该显示在内容呈现器中.
好.如果我点击ListBox下面的XAML,它可以完全按照要求工作.
但是,如果单击UniformGrid(由项目控件创建)中的按钮,CurrentItem则不会更新该属性.
如何CurrentItem在ItemsControl?中选择项目时更新?
谢谢
<UserControl x:Class="Pos.Features.Reservation.ReservationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:product="clr-namespace:Pos.Features.ProductBrowser"
xmlns:activity="clr-namespace:Pos.Features.ActivityBrowser"
xmlns:addbysku="clr-namespace:Pos.Features.AddBySku"
xmlns:client="clr-namespace:Pos.Features.ClientBrowser"
xmlns:notes="clr-namespace:Pos.Features.Notes"
xmlns:controls="clr-namespace:Pos.Views"
xmlns:res="clr-namespace:Pos.Core;assembly=Pos.Core"
Height="300" Width="300">
<UserControl.Resources>
<DataTemplate DataType="{x:Type product:ProductBrowserViewModel}">
<product:ProductBrowserView/>
</DataTemplate>
<DataTemplate DataType="{x:Type activity:ActivityBrowserViewModel}">
<activity:ActivityBrowserView/>
</DataTemplate>
<CollectionViewSource x:Name="x" x:Key="ViewsCollection" Source="{Binding Views}" />
</UserControl.Resources>
<StackPanel>
<ListBox Name="ListBoxMenu" Grid.Column="0" Margin="5" ItemsSource="{Binding Source={StaticResource ViewsCollection}}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Padding="10"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ContentControl Grid.Column="1" Content="{Binding …Run Code Online (Sandbox Code Playgroud) data-binding wpf itemscontrol collectionviewsource currentitem
我有一个自定义排序的datagrid源CollectionViewSource,我需要获得排序的项目集合,这在datagrid中可以看到。我可以获得排序的描述和排序的源集合,但是我需要很多时间。
有什么方法可以获取启用索引的排序集合(item[index])?
我有一个集合视图,我想在其中应用大于平均水平的过滤器。问题是列类型是字符串。因此,正常大于任何数字在转换为双精度类型后都可以完美工作,问题是如何求平均值。我尝试了以下代码:
collectionView.CustomFilter = $"CONVERT({col}, 'System.Double') > AVG([{col}])";
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它会中断,因为 AVG 无法应用于字符串类型。但是当我试图把
AVG([CONVERT({col}, 'System.Double')])
Run Code Online (Sandbox Code Playgroud)
它不评估转化。
有什么建议可以克服它吗?
我将 a 绑定CollectionViewSource到 aListView以对项目进行分组。一切都很好,除非我更新其ObservableCollection基础CollectionViewSource。如果我更新集合中对象的值,则 UI 永远不会更新。这是一个例子:
<ListView x:Name="MyListView" Margin="0,0,0,65">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin" Value="0,0,0,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="true" BorderBrush="#FFA4B97F" BorderThickness="0,0,0,1">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold" Text="{Binding Name}" Margin="5,0,0,0" Width="80"/>
<TextBlock FontWeight="Bold" Width="60" TextAlignment="Center" Margin="16,0,0,0" Text="{Binding Items, Converter={StaticResource Converter2}}" />
</DockPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
<ListView.View>
<GridView>
<GridViewColumn Width="300" Header="Amount" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Amount}" Margin="80,0,0,0"/>
</DataTemplate>
</GridViewColumn.CellTemplate> …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我如何在Windows 8上的XAML中的CollectionViewSource中设置正确的属性?
<CollectionViewSource x:Name="itemsViewSource"
Source="{Binding Items}"
d:Source="{Binding AllTasks, Source={d:DesignInstance Type=data:TaskItems, IsDesignTimeCreatable=True}}"/>
Run Code Online (Sandbox Code Playgroud)
x:name是对象的名称.什么来源?d:源和源之间有什么区别?有谁可以向我解释一下?
我想知道哪些类和/或接口可以分配给 WPF Collection\xe2\x80\x8bView\xe2\x80\x8bSource.\xe2\x80\x8bSource Property。帮助文档没有解释任何内容:
public object Source { get; set; }\nRun Code Online (Sandbox Code Playgroud)\n\n没有解释,也没有代码示例,因为Source是 类型object,所以可以分配任何内容。我猜想Source支持各种接口作为源,但是哪些接口?
例如,我知道它可以与 a 一起使用List<>,它实现了许多接口。我想其中最基本的是IEnumerable<T>。是否Source接受任何实现的东西,并且类型的IEnumerable<T>原因是因为它也必须支持?它还支持什么?如果还实现了更高的接口,那么它会发挥优势吗?SourceobjectIEnumerableIList<>
对于所有无法抗拒将问题标记为重复的人:
\n\n如果您将一个问题标记为重复并阻止任何进一步的答案,只是因为您在某处看到了将某些内容分配给 的答案,那是非常令人沮丧的Collection\xe2\x80\x8bView\xe2\x80\x8bSource.Source。其中有很多。但请注意,这个问题不仅仅要求一个例子,而是我想知道可以分配的所有内容。
我一直在寻找这个问题,但我找不到任何可以真正为我解决问题的东西。
SortDescription 集合和 LiveSortingProperties 之间的交互是什么?
LiveSorting 是否依赖于 SortDescriptions 的存在来确定 ASC/DESC 顺序?实时排序属性只是关于要监视哪些属性更改的规范吗?
如果我想更改排序基础,是否需要清除 SortDescription 集合,然后添加新集合并“刷新”视图?
您是否需要 LiveSorting 来处理对底层 ObservableCollection 的添加/删除,或者只是以防集合中已有对象的某些属性发生变化?
有没有办法可以过滤CollectionViewSource只显示ItemsSource“标题”包含“搜索字符串”的游戏?
在我的PosterView我有这个 CVS:
<CollectionViewSource x:Key="GameListCVS"
Source="{Binding PosterView}"
Filter="GameSearchFilter">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Title" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
Run Code Online (Sandbox Code Playgroud)
还有这个 ItemsControl
<ItemsControl x:Name="gameListView"
ItemsSource="{Binding Source={StaticResource GameListCVS}}">
Run Code Online (Sandbox Code Playgroud)
我的 MainWindow.xaml 包含搜索框,它可以成功地将 searchString(包含搜索框中内容的字符串)传递给PosterView.
PosterView 绑定实际上是(令人困惑,我知道), ObservableCollection
public ObservableCollection<GameList> PosterView { get; set; }
Run Code Online (Sandbox Code Playgroud)
以下是将游戏添加到 ObservableCollection
games.Add(new GameList
{
Title = columns[0],
Genre = columns[1],
Path = columns[2],
Link = columns[3],
Icon = columns[4],
Poster = columns[5],
Banner = columns[6],
Guid = columns[7]
});
Run Code Online (Sandbox Code Playgroud) 我正在通过实体框架将 MS SQL Server 表中的行读取到 C# CollectionViewSource 中。一行 = 一个集合条目。
我使用数据绑定将每个 CollectionViewSource 条目的数据元素连接到 WPF GUI 的控件。用户使用 GUI 上的按钮使用如下所示的命令处理程序在集合条目中前后翻页。
private void DisplayNextRecordButtonCommandHandler(object sender, ExecutedRoutedEventArgs e) // Select the Next record for Display.
{
MyCollectionViewSource.View.MoveCurrentToNext();
//Prevent the display of an "empty" record
if (MyCollectionViewSource.View.IsCurrentAfterLast)
{
orgUnitAssetRskViewSource.View.MoveCurrentToPrevious();
}
selectedRecordPosition = orgUnitAssetRskViewSource.View.CurrentPosition;
}
Run Code Online (Sandbox Code Playgroud)
在我开始在 GUI ComboBox 和 Text 控件中包含“SelectionChanged”和“TextChanged”事件之前,一切都运行良好。当我移动到集合中的下一个或上一个条目时会触发这些事件。一切正常,直到我到达集合中的第一个或最后一个条目。
“IsCurrentAfterLast”测试不会阻止我翻过集合中的最后一个条目,当我这样做时,我会收到“对象引用未设置为对象的实例”异常。我假设当“SelectionChanged”和“TextChanged”事件在第一个集合条目之前或最后一个集合条目之后遇到虚假数据时会导致异常。
在没有像“IsCurrentFirst”和“IsCurrentLast”这样的东西的情况下,谁能提出一种有效的方法来计算集合中的条目,这样我就可以避免越过第一个和最后一个?
我有一个ListView分组.我想ListView根据输入的文字显示此项目TextBox.有许多关于过滤ListView和的教程CollectionViewSource,但它们WPF不是UWP.我在做什么:
我的ListView:
<ListView x:Name="ContactsListView"
ItemTemplate="{StaticResource ContactsTemplate}"
ItemsSource="{x:Bind ContactsViewSource.View}"
SelectionMode="Single"
ShowsScrollingPlaceholders="True" >
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="data:GroupingItem">
<TextBlock Text="{x:Bind Key}"
Foreground="Blue"
Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我CollectionViewSource的定义是Page.Resources:
<CollectionViewSource x:Name="ContactsViewSource"
x:Key="src"
IsSourceGrouped="True" />
Run Code Online (Sandbox Code Playgroud)
我创建了一个textChanged事件处理程序TextBox:
private void SearchBox_TextChanged(object sender, TextChangedEventArgs e) {
....
//here I filter ListView items and add them to CollectionViewSource
ContactsViewSource.Source = filteredValues;
} …Run Code Online (Sandbox Code Playgroud) wpf ×9
c# ×4
data-binding ×2
xaml ×2
bindinglist ×1
currentitem ×1
datatable ×1
itemscontrol ×1
listview ×1
mvvm ×1
sorting ×1
uwp ×1
windows-10 ×1