如何从代码隐藏更改可视化画笔中使用的静态资源,以响应正确的用户输入
本文关键字:资源 静态 响应 输入 用户 隐藏 代码 画笔 可视化 | 更新日期: 2023-09-27 18:31:28
我有一个矩形,填充设置为MahApps.Metro附带的图标集中的图标
这是代码
<Rectangle x:Name="urlIcon" HorizontalAlignment="Left" Height="26" Margin="448,48,0,0" VerticalAlignment="Top" Width="28">
<Rectangle.Fill>
<VisualBrush Visual="{StaticResource appbar_warning}" />
</Rectangle.Fill>
</Rectangle>
在 XAML 设计中,我有一个获取用户输入网址的 URL 框。在后面的代码中,我检查网址是否可访问,如果是,那么我想将静态资源更改为另一个图标"appbar_check"
下面是 URL 框的事件方法。 urlExists 是另一种检查 url 的方法。
private void urlBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
String url = ((TextBox)sender).Text;
if (urlExists(url))
{
//change icon
}
}
您可以访问资源以填充矩形,如下所示
urlIcon.Fill = new VisualBrush() { Visual = (Visual)Resources["appbar_check"] };
此外,由于您的资源是 UIElements,因此为了在多个位置使用它们,您需要在画布资源上设置<Canvas x:Shared="false" >
,以便每次询问时返回新资源。否则,它将给出一个错误,指出视觉对象已经是某个其他控件的子控件。
由于我正在学习WPF曲线,因此我不确定语法。但是你可以尝试这样的事情。
urlIcon.Fill(new VisualBrush(...))
愿这对您有所帮助或给您一个想法
对于这种用途,您最好使用 DynamicResource。