我有一个矩形,其填充设置为 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"] };
另外,由于您的资源是 UIElement,因此为了在多个地方使用它们,您需要设置 <Canvas x:Shared="false" >
在 Canvas 资源上,以便每次询问时返回新资源。否则它会给出一个错误,即视觉对象已经是其他控件的子控件。
关于c# - 如何从代码隐藏更改 VisualBrush 中使用的 StaticResource 以响应正确的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820659/