gpt4 book ai didi

wpf - 关于 WPF xaml 中的数据模板或样式的问题

转载 作者:行者123 更新时间:2023-12-01 13:04:38 25 4
gpt4 key购买 nike

我有一个文本框,其中包含以下简单的 XAML(不需要阅读它 - 仅供引用):

<TextBox Name="m_ctrlUserDeviceType" Style="{StaticResource textStyleTextBox}" Text="{Binding Source={x:Static api:MySettings.Instance}, Path=UserDeviceType, ValidatesOnExceptions=true, NotifyOnValidationError=true}" Validation.Error="TextBox_Error" MinHeight="25" Margin="4" VerticalAlignment="Top" MaxLength="23" VerticalContentAlignment="Center" HorizontalAlignment="Left" MinWidth="100"></TextBox>

为了完整起见,样式 textStyleTextBox 看起来像这样(同样,不需要阅读来回答问题):

<Style x:Key="textStyleTextBox" TargetType="TextBox">
<Setter Property="Foreground" Value="#333333" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="MinHeight" Value="2" />
<Setter Property="MinWidth" Value="100" />
<Setter Property="Margin" Value="4" />
<Setter Property="MaxLength" Value="23" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Left" />
<!-- <Setter Property="Binding Source" Value="{x:Static api:MySettings.Instance}"/>
<Setter Property="Binding ValidatesOnExceptions" Value="true" />
<Setter Property="Binding NotifyOnValidationError" Value="true" /> -->



<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>

我在样式中有很多东西(MiHeight、Margin 等),因为我有很多这样的文本框,它们几乎完全相同。事实上,除了风格之外,还有很多共同点。绑定(bind)到类 MySettings 的细节几乎相同。唯一的区别是文本框也绑定(bind)了哪个特定属性。此外,对于 Validation.Error,我总是使用 TextBox_Error。

有没有一种方法可以将绑定(bind)信息放入样式或数据模板中,这样我就不必为每个文本框都键入它了?

我需要能够为每个文本框分配一个单独的属性(路径),我想我仍然需要能够不对将来添加的某些特定文本框使用任何它(与数据绑定(bind)到 MySettings)。

有没有办法将 TextBox_Error 部分放在样式或 DataTemplate 中?使用 Setter 属性似乎对我不起作用。

我一直提到数据模板,因为我认为答案可能与基于阅读 C# 2008 中的 Pro Silverlight 2 有关。但是,我无法弄清楚。我还尝试将内容添加到“样式”,您可以从该部分的注释掉的内容中看到。

谢谢,

戴夫

最佳答案

我认为没有办法完成您的要求。不过,我确实认为您可以采用不同的方式。

我要研究的是创建一个扩展 TextBox 的自定义控件,然后创建一些依赖属性,这些属性在控件初始化时设置绑定(bind)和错误验证。

通过这种方式,您可以在整个应用程序中使用自定义文本框并控制每个属性,甚至可以为它们设置相同的样式(只需更改样式的目标类型)

HTH

关于wpf - 关于 WPF xaml 中的数据模板或样式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com