我有一个自定义的WPF控件,其上应用了XAML控件模板。
XAML控件模板的图像宽度和高度我希望绑定到控件类中的属性。
<Image Height="24" Width="24" Source="{Binding Path=IconSource}" Margin="2" />
我想将Height和Width绑定到我的类的属性,类似于我如何绑定我喜欢的按钮的onclick事件:
MyClass代码
#region Constructor
public MyClass()
{
CommandBindings.Add(new CommandBinding(ButtonClickCommand, ButtonClickCommand_Executed));
}
#endregion
#region Public
public static readonly RoutedUICommand ButtonClickCommand= new RoutedUICommand();
#endregion
private void ChangeViewCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
//do something
}
XAML
<Button Name="MyButton" Command="{x:Static local:MyClass.ButtonClickCommand}">
<Image Source="{DynamicResource MyImage}" Width="20" Height="20"/>
</Button>
如何为图像高度和宽度做类似的事情?我将拥有一个我想修改的属性,并将其反映在XAML中。
答案 0 :(得分:1)
如果Image元素是控件的子元素,则可以使用RelativeSource绑定到父控件的属性:
<Image Source="{DynamicResource MyImage}" Width="{Binding YourWidth, RelativeSource={RelativeSource AncestorType=local:MyClass}}"
Height="{Binding YourHeight, RelativeSource={RelativeSource AncestorType=local:MyClass}}" />
当然,您还必须将YourWidth
和YourHeight
属性或您选择的任何属性添加到控件类中。属性的类型应为double
:
public static readonly DependencyProperty YourWidthProperty =
DependencyProperty.Register("YourWidth", typeof(double),
typeof(MyClass), new FrameworkPropertyMetadata(0.0));
public double YourWidth
{
get { return (double)GetValue(YourWidthProperty); }
set { SetValue(YourWidthProperty, value); }
}
答案 1 :(得分:1)
嗯,您需要对XAML进行的唯一更改是:
<Image Height="{Binding ImageHeight}" Width="{Binding ImageWidth}" Source="{Binding Path=IconSource}" Margin="2" />
然后你要做的就是在MyClass
上创建两个属性:
public double ImageWidth { get; set; }
public double ImageWidth { get; set; }
不要忘记set your window DataContext到MyClass
和implement INotifyPropertyChanged界面!