XAML 控件与数据模板中的另一个控件绑定!

发布于 2024-10-22 03:17:40 字数 1525 浏览 2 评论 0原文

我在 xaml 中有以下数据模板,这里我在数据模板中有文本框,在普通 XAML 中有按钮,我真正想要的是我想保持按钮处于禁用状态,直到人们在文本框中输入内容?但它不起作用我已经尝试了以下代码

请查看它并帮助我!或者有任何其他方法可以做到这一点让我知道!

 <UserControl.Resources>
    <DataTemplate x:Key="dataTemplateParameter">            
        <StackPanel Width="170" Height="Auto" Margin="5">
            <TextBlock Width="160" TextAlignment="Left" HorizontalAlignment="Left" Height="22" Text="{Binding Path=ParameterName, Mode=TwoWay}"/>
            <TextBox x:Name="txtboxParameter"  Width="160" Height="22" HorizontalAlignment="Left" Text="{Binding Path=ParameterValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </StackPanel>            
    </DataTemplate>

<Button  Grid.Row="6" Name="SearchSourceParamBtn" Content="Search" VerticalAlignment="Bottom" Margin="12,5,92,0" Height="20" Visibility="{Binding SearchSourceBtnVisibility}" Command="{Binding SearchCommand}">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="True"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text,x:ElementName=txtboxParameter}" Value="">
                        <Setter Property="IsEnabled" Value="False" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

谢谢 纳尔斯卡蒂

i have the following datatemplate in xaml and here i have textbox in datatemplate and button in normal XAML, what i really want is that i want to keep button be disabled until person enters something in textbox ? but its not working i have tried the follwing code

Please look into it and help me as well ! or is there any other way to do this let me know !

 <UserControl.Resources>
    <DataTemplate x:Key="dataTemplateParameter">            
        <StackPanel Width="170" Height="Auto" Margin="5">
            <TextBlock Width="160" TextAlignment="Left" HorizontalAlignment="Left" Height="22" Text="{Binding Path=ParameterName, Mode=TwoWay}"/>
            <TextBox x:Name="txtboxParameter"  Width="160" Height="22" HorizontalAlignment="Left" Text="{Binding Path=ParameterValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </StackPanel>            
    </DataTemplate>

<Button  Grid.Row="6" Name="SearchSourceParamBtn" Content="Search" VerticalAlignment="Bottom" Margin="12,5,92,0" Height="20" Visibility="{Binding SearchSourceBtnVisibility}" Command="{Binding SearchCommand}">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="True"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text,x:ElementName=txtboxParameter}" Value="">
                        <Setter Property="IsEnabled" Value="False" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

Thanks
nallskarthi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不即不离 2024-10-29 03:17:40

您可以通过
来实现这一点
1)将按钮绑定到RelayCommand。那么,
2) 验证命令的 CanExecute 委托中的“ParameterValue”。

编辑:
更好的方法是在 ViewModel 中包含 ParameterValue,但由于某种原因您不会这样做。然后,在VM中创建一个静态ChangeNotifyable属性,使用该属性在CanExecute委托中进行验证。

在此处输入图像描述

You can achieve this by
1) binding button to RelayCommand. Then,
2) Validate the "ParameterValue" in command's CanExecute delegate.

Edit:
The better way is to have the ParameterValue in ViewModel, but for some reason you won't do that. Then, create a static ChangeNotifyable property in VM, using this property do the validation in CanExecute delegate.

enter image description here

不念旧人 2024-10-29 03:17:40

请验证 Command 对象的 CanExecute 委托中的“ParameterValue”。

Pls Validate the "ParameterValue" in the CanExecute delegate of Command object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文