我的問題是沒有連線DependencyProperties
在UserControl
。這不是問題。當我將UserControl
中的按鈕綁定到UserControl
的DependencyProperty
時,調用TargetCommand
,當我在UserControl
上設置DataContext
時,綁定中斷。我嘗試過使用FindAncestor
,當然還有ElementName
,但它們僅在UserControl
上沒有DataContext
時起作用。如何:當UserControl具有DataContext時綁定到UserControl的DependencyProperty?
有沒有辦法解決這個問題?
例如:
主窗口
<Window xmlns:UserControls="clr-namespace:SomeNameSpace">
<Grid>
<UserControls:MyUserControl
TargetCommand="{Binding PathToCommand}"
DataContext="{Binding PathToSomeModel}" />
的MyUserControl代碼後面
public partial class MyUserControl : UserControl
{
public static readonly DependencyProperty TargetCommandProperty =
DependencyProperty.Register("TargetCommand", typeof(ICommand), typeof(MyUserControl));
public ICommand TargetCommand
{
get { return (ICommand)GetValue(TargetCommandProperty); }
set { SetValue(TargetCommandProperty, value); }
}
的MyUserControl - 的Xaml
<UserControl x:Name="root">
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=TargetCommand}" />
<Button Command="{Binding Path=TargetCommand, ElementName=root}" />
的的RelativeSource和方法具的ElementName只要未在MainWindow中的MyUserControl上設置DataContext,MyUserControl中綁定的ds都會正確連接。一旦設置了DataContext,就不會工作。
有沒有辦法在MyUserControl上設置DataContext,並仍然將DependencyProperty綁定到TargetCommand?
不錯......我忽略了這一點。謝謝 – Nicholas 2011-02-17 19:42:20