[英]WPF binding to user control data grid
我有一個用戶控件,我試圖利用它在許多實例中使用。 但是我似乎無法使綁定正常工作。
我擁有的控件XAML:
<UserControl x:Class="EveCommon.WPF.Inventory.EveInventoryGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:EveCommon.WPF.Inventory"
mc:Ignorable="d"
x:Name="uc"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style x:Key="HeaderRightJustify" TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
</Style>
<Style x:Key="ColumnRight" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
</Style>
</UserControl.Resources>
<Grid>
<DataGrid x:Name="ItemsDG" IsReadOnly="True" ItemsSource="{Binding Path=Inventory, ElementName=uc}" AutoGenerateColumns="False">
<DataGrid.Columns>
<!-- SETUP COLUMNS HERE -->
</DataGrid.Columns>
</DataGrid>
</Grid>
以及后面的代碼:
public partial class EveInventoryGrid : UserControl
{
public static DependencyProperty InventoryProperty = DependencyProperty.Register(
"Inventory",
typeof(EveInventory),
typeof(EveInventoryGrid));
public EveInventory Inventory
{
get { return (EveInventory)GetValue(InventoryProperty); }
set { SetValue(InventoryProperty, value); }
}
}
最后是來自主窗口的呼叫。
<inventory:EveInventoryGrid x:Name="ItemsView" Grid.Column="1" Inventory="{Binding Path=Inventory}" ShowName="True" ShowCost="True"/>
庫存是EveInventory的一個實例,並且確實實現了INotifyPropertyChanged。
我只是看不到/不明白我在這里缺少什么。
如上所述,在將綁定與INotifyPropertyChanged
一起使用時,必須使用ObservableCollection<T>
而不是List<T>
。 否則,系統將無法識別更改並且不會更新UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.