简单的新手问题。
我有一个按钮,当前在viewmodel中执行“insert”代码:
<Button Content="Insert" Grid.Column="3" Grid.Row="2" Height="75"
Command="{Binding Insert}" />
在同一个用户控件中,我有一个customcontrol,CustomInkCanvas,定义为:
<wc:CustomInkCanvas x:Name="myInkCanvas"
Vocabulary="{Binding Vocabulary, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
Text="{Binding Text, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
WordPad="{Binding WordPad, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"
CloseCharacterPads ="{Binding CloseCharacterPads}"
EditWord ="{Binding EditWord}"
/>
我想做的是添加以下内容:
FormatText = {Binding ??? ElementName=Insert ???}
到customcontrol xaml,这样点击Button就会向customcontrol发送一条消息,重新格式化自己。此重新格式化也需要在按钮所连接的视图模型的“插入”方法之前完成。为了清楚起见,我需要点击按钮,首先告诉custominkcanvas重新格式化,然后再在viewmodel中执行活动。
这可以通过XAML完成,如果是这样的话?
提前感谢您对此的任何帮助。 (如果我有一个强点,XAML不是它!)
答案 0 :(得分:1)
您可以在视图模型上使用2个属性,在自定义控件上使用一个属性
CustomInkCanvas.cs
public string FormatText
{
get { return (string)GetValue(FormatTextProperty); }
set { SetValue(FormatTextProperty, value); }
}
// Using a DependencyProperty as the backing store for FormatText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FormatTextProperty =
DependencyProperty.Register("FormatText", typeof(string),
typeof(CustomInkCanvas), new PropertyMetadata(string.Empty));
在您的ViewModel中(类需要实现 INotifyPropertyChanged )
private string _updatedText = string.Empty;
public string UpdatedText
{
get { return _updatedText ; }
set
{
_updatedText = value;
OnPropertyChnaged("UpdatedText");
}
}
然后在您的自定义控件上
<wc:CustomInkCanvas x:Name="myInkCanvas"
FormatText={Binding Path="UpdatedText"} />
在您的命令中插入
this.UpdatedText = "your text";
//your insert code