【发布时间】:2018-02-16 14:13:32
【问题描述】:
我正在尝试将依赖属性绑定到另一个属性,但它似乎不起作用。我在另一个 ItemsControl 中有一个 ItemsControl:
<!--This is an itemscontrol in BigBox.xaml that contains bins-->
<ItemsControl
x:Name="ctrlBin"
Grid.Column="1"
Grid.Row="1"
ItemsPanel="{StaticResource HorizontalStackPanel}"
ItemsSource="{Binding Bins}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl
ItemsSource="{Binding}"
ItemContainerStyle="{StaticResource BinViewContainer}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:BinView
x:Name="ctrlBin"
BorderBrush="Black"
BorderThickness="1"
Bin="{Binding}"
BinFlashStart="{Binding DashboardFlashStart}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是在我的“大盒子”里
private bool? m_DashboardFlashStart;
public bool? DashboardFlashStart
{
get=> m_DashboardFlashStart;
set => Set(ref m_DashboardFlashStart, value);
}
这是在我的 BinView 中
//This is in the BinView.xaml.cs
public static DependencyProperty BinFlashStartProperty =
DependencyProperty.Register(
"BinFlashStart",
typeof(bool?),
typeof(BinView),
new PropertyMetadata(null, OnBinFlashStartSet));
private static void OnBinFlashStartSet(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
BinVM Bin = ((BinView)sender).m_BinVM;
Bin.CurBin.FlashBin = (bool?)e.NewValue;
}
public bool? BinFlashStart
{
get => (bool?) GetValue(BinFlashStartProperty);
set => SetValue(BinFlashStartProperty, value);
}
这样我得到一个错误
System.Windows.Data Error: 40 : BindingExpression path error: 'DashboardFlashStart' property not found on 'object' ''Bin' (HashCode=-125066214)'. BindingExpression:Path=DashboardFlashStart; DataItem='Bin' (HashCode=-125066214); target element is 'BinView' (Name=''); target property is 'BinFlashStart' (type 'Nullable`1')
为什么要在“Bin”上寻找 DashboardFlashStart 属性。我认为这是来自 BigBox 的来源。 就像我在 BigBox.xaml 中为 BinFlashStart 放置一个静态值“True”而不是绑定,那么它就可以工作。为什么我无法绑定到 BigBox 的 DashboardFlashStart。
如果有人可以解释发生了什么,那将非常有帮助。 我是这个 WPF 的新手。
【问题讨论】:
-
DashboardFlashStart 属性到底是在哪里定义的?什么是垃圾箱?
-
@mm8 它在包含 Bins(也是一个 UserControl)的 BigBox(它是一个 UserControl)中定义。我在 Dashboard 应用程序中使用 BigBox 控件并从那里设置 DashboardFlashStart
标签: c# wpf dependency-properties