【发布时间】:2020-06-13 18:16:23
【问题描述】:
似乎这将是一个简单的解决方案,但我已经为此苦苦挣扎了一个多星期。 我要做的就是将 XAML 变量设置为与后面的 VB 代码不同的颜色
在我的 Application.xaml 中,我定义了一个纯色画笔,然后使用该画笔定义样式:
<Application.Resources>
<SolidColorBrush x:Name="BrushBG" x:Key="KeyMainBrush" Color="White"/>
<Style x:Name="styleGridBG" x:Key="GridBGColor" TargetType="Grid">
<Setter Property="Background" Value="{StaticResource KeyMainBrush}"/>
</Style>
</Application.Resources>
在我的主窗口 XAML 中,我有一个使用该样式的网格
<Grid x:Name="grdColor" Style="{DynamicResource GridBGColor}"
HorizontalAlignment="Left" Height="77" Margin="205,100,0,0" VerticalAlignment="Top" Width="493" />
在我的MainWindow VB中,我想在选中单个单选按钮时将该颜色更改为红色。我能读懂颜色,但不知道如何写颜色:
Private Sub rdRed_Checked(sender As Object, e As RoutedEventArgs) Handles rdRed.Checked
MsgBox(Me.FindResource("KeyMainBrush").ToString)
DataContext(Me.FindResource("KeyMainBrush")) = New SolidColorBrush(Colors.Red)
End Sub
我收到错误 System.NullReferenceException: 'Object variable or With block variable not set.'
【问题讨论】:
-
如果没有具有 runat="server" 的对象,您无法在代码中引用对象因此,将该属性 (runat="server") 添加到表单上的网格控件应该允许您从 vb 代码中引用并使用该网格对象。现在我刚刚注意到这不是 asp.net - 所以我很可能在这里错了。
-
@AlbertD.Kallal,“这不是 asp.net - 所以我很可能在这里错了” - 是的。 WPF 没有 runat="server" 的概念