
AI
DynamicResource 颜色不适用于边框上的 BorderBrush - Bug?
最近,我在使用 WPF (Windows Presentation Foundation) 开发应用程序时,遇到了一个令人困惑的问题。我注意到,当我尝试使用 DynamicResource 来动态设置边框的 BorderBrush 颜色时,它似乎不起作用。经过一番研究和实验,我发现这可能是一个 Bug。在 WPF 中,DynamicResource 是一种用于实现资源共享和动态更新的机制。通过使用 DynamicResource,我们可以将资源的值从其定义位置传递到引用位置,并在资源的值更改时自动更新引用位置。然而,当我尝试将 DynamicResource 应用于边框的 BorderBrush 属性时,我发现它并没有按预期工作。为了验证这个问题,我创建了一个简单的案例代码。首先,我定义了一个名为 "MyBorderBrush" 的颜色资源,并将其设置为红色。然后,我创建了一个边框,并将其 BorderBrush 属性设置为使用 DynamicResource 引用 "MyBorderBrush" 资源。最后,我将边框添加到一个窗口中。xaml<Window x:Class="WpfApp.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF App" Height="450" Width="800"> <Window.Resources> <Color x:Key="MyBorderBrush">#FF0000</Color> </Window.Resources> <Grid> <Border BorderThickness="2" BorderBrush="{DynamicResource MyBorderBrush}"> <TextBlock Text="Hello, WPF!" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Border> </Grid></Window>然而,当我运行这段代码时,我发现边框的 BorderBrush 并没有变成红色,而是保持着默认的颜色。经过进一步的调查,我发现,DynamicResource 在边框的 BorderBrush 属性上并没有起作用,而在其他属性上则能正常工作。这意味着,无法通过 DynamicResource 动态更改边框的边框颜色。解决方案为了解决这个问题,我找到了一个替代方案。我发现,可以使用 Style 来实现类似的效果。首先,我定义了一个名为 "MyBorderStyle" 的 Style,其中设置了边框的 BorderBrush 属性为 "MyBorderBrush" 资源。然后,我将这个 Style 应用于边框。这样,当 "MyBorderBrush" 资源的值更改时,边框的边框颜色也会自动更新。xaml<Window x:Class="WpfApp.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF App" Height="450" Width="800"> <Window.Resources> <Color x:Key="MyBorderBrush">#FF0000</Color> <Style x:Key="MyBorderStyle" TargetType="Border"> <Setter Property="BorderBrush" Value="{DynamicResource MyBorderBrush}" /> </Style> </Window.Resources> <Grid> <Border Style="{StaticResource MyBorderStyle}" BorderThickness="2"> <TextBlock Text="Hello, WPF!" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Border> </Grid></Window>通过使用这种方法,我成功地解决了 DynamicResource 在边框的 BorderBrush 属性上不起作用的问题。现在,当我更新 "MyBorderBrush" 资源的值时,边框的边框颜色也会相应地更新。在本文中,我探讨了一个关于 WPF 中 DynamicResource 的问题。尽管 DynamicResource 在大多数属性上都能正常工作,但它似乎不适用于边框的 BorderBrush 属性。通过使用 Style 的方式,我们可以绕过这个问题,并实现类似的效果。希望这篇文章对于其他遇到类似问题的开发者能提供帮助。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号