gpt4 book ai didi

c# - 文本框内按钮的 RelayCommand

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:13 24 4
gpt4 key购买 nike

我在 TextBox 中有一个按钮。我想为我的按钮绑定(bind)命令。但是当我点击按钮时它不起作用。这是 App.xaml 中的文本框模板:

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ScrollViewer Name="PART_ContentHost"
VerticalAlignment="Center"
Margin="10,0" Grid.Column="0"/>
<Button Command="{Binding CmdRandom, RelativeSource={x:Static RelativeSource.Self}}"
Height="15"
Width="15"
Grid.Column="1" />
</Grid>

View 模型:

    string getrnd;
public string GetRnd {
set {
getrnd = value;
OnPropertyChanged("GetRnd");
}
get {
return getrnd;
}
}
public ICommand CmdRandom {
set {
cmdrnd = value;
}
get {
cmdrnd = cmdrnd ?? new RelayCommand(x => BindRandom(), x => true);
return cmrnd;
}
}

void BindRandom()
{
GetRnd = new RandomChar();
}

我的文本框:

<TextBox x:Name="txtName" Style="{StaticResource txtRnd}" MaxLength="63" Text="{Binding GetRnd, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" />

最佳答案

如果你想获得祖先的属性:

{Binding DataContext.CmdRandom, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TextBox}}}

更多信息:

Binding RelativeSource={
RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemType}}

RelativeSource 的默认属性是 Mode 属性。此处给出了一组完整的有效值 ( from MSDN ):

  • PreviousData 允许您在显示的数据项列表中绑定(bind)上一个数据项(不是包含该数据项的控件)。

  • TemplatedParent 指的是应用模板(其中存在数据绑定(bind)元素)的元素。这类似于设置 TemplateBindingExtension,并且仅当 Binding 在模板内时才适用。

  • Self 指的是您在其上设置绑定(bind)的元素,并允许您将该元素的一个属性绑定(bind)到同一元素上的另一个属性。

  • FindAncestor 引用数据绑定(bind)元素的父链中的祖先。您可以使用它来绑定(bind)到特定类型或其子类的祖先。如果您想指定 AncestorType 和/或 AncestorLevel,则可以使用这种模式。

关于c# - 文本框内按钮的 RelayCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37896567/

24 4 0