当子项出现错误时,使用户控件父项无效
本文关键字:用户 控件 无效 错误 | 更新日期: 2023-09-27 18:33:52
我创建了一个用作简单文件浏览器的用户控件。我希望看到的是,当文本框出现错误时,完整的用户控件设置为无效。
我认为应该可以仅使用 WPF 获得结果......
<UserControl x:Class="WorldGenerator.Controls.FileBrowseControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignWidth="300"
xmlns:wg="clr-namespace:WorldGenerator.Controls"
xmlns:v="clr-namespace:WorldGenerator.Validation">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Margin="0,0,10,0">
<TextBox.Text>
<Binding Path="FilePath">
<Binding.RelativeSource>
<RelativeSource AncestorType="wg:FileBrowseControl" Mode="FindAncestor"/>
</Binding.RelativeSource>
<Binding.ValidationRules>
<v:FileExistsValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Button Grid.Column="1" Click="BrowseButton_OnClick" Content="Browse..."/>
</Grid>
</UserControl>
编辑:这是FileBrowseControl
在Window
中的用法。
<Window>
<FileBrowseControl/>
<Button IsEnabled="{Binding BUT HOW DO I BIND TO FileBrowseControl.HasErrors?}"/>
</Window>
可以通过
将"IsEnabled"属性设置为false
;例如,有一个名为 userControl
的用户控件。然后在文本框验证逻辑中IsEnabled
可以将 userControl
的属性设置为 false
:
您的 xaml:
<UserControl x:Class="DataGridWpfApplication.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DataGridWpfApplication"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Name="userControl">
<Grid>
</Grid>
</UserControl>
在代码隐藏中,可以将IsEnabled
属性设置为 false
:
private void SetIsEnabledProperty()
{
userControl.IsEnabled = false;
}