如何在C#代码中访问XAML文件的边框? 我搜索但没有发现任何东西,对WPF来说有点新,所以不知道如何实现概念。
我想在C#中更改此元素的背景颜色。
谢谢
修改
这是整个代码
<Button x:Name="btnSNUcenik" Click="btnSNUcenik_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<DockPanel Width="215" Cursor="Hand">
<DockPanel.Style>
<Style TargetType="{x:Type DockPanel}">
<Setter Property="Background" Value="#2B303D"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#242631"/>
</Trigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<!-- right here -->
<Border x:Name="brdrSNUcenik" Padding="10" HorizontalAlignment="Center" Width="148">
<Label Content="Ucenik" Foreground="Gray" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" VerticalAlignment="Center" Margin="19,0,0,0"/>
</Border>
<Border Padding="10" HorizontalAlignment="Right">
<Border Padding="9" Background="#242631">
<Image x:Name="icons8_Graduation_Cap_48px_png" Height="25" Source="Images/icons8_Graduation_Cap_48px.png" Stretch="Fill" Width="25"/>
</Border>
</Border>
</DockPanel>
</ControlTemplate>
</Button.Template>
</Button>
答案 0 :(得分:3)
据我所知,您需要导航可视树以找到边框,您无法直接访问模板的内容。请参阅https://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper(v=vs.110).aspx - 使用GetChild和GetChildrenCount,您可以深入查看可视树并检查边框,直到找到所需的对象(从按钮开始,我想)。我不确定是否有更简单的解决方案(当然,您可以编写自己的帮助方法或扩展方法以使其更容易)。
答案 1 :(得分:1)
完成@Alex Paven的答案,因为这也是我过去一直在努力解决的问题。我需要强制ComboBox的ScrollViewer没有垂直偏移,事实并非如此,并且在处理大尺寸列表时非常不舒服。 通过在generic.xaml文件中查看ComboBox的模板并使用VisualTreeHelper类,我可以进入ScrollViewer并强制事件更改它的View。
您必须执行几乎相同的过程,但您将引用自己的模板,而不是generic.xaml文件中定义的默认模板。
只需几行,就可以帮到你。
postgres-data
答案 2 :(得分:0)
正如@Alex Paven建议的那样,@AndréB让我进入VisualTreeHelper课程,经过几个小时的配置后,我终于完成了我需要的东西。我的问题的完整代码是:
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(this.spSideNav); i++) // in sidenav stack panel
{
DependencyObject current = VisualTreeHelper.GetChild(this.spSideNav, this.currentlyActive + 1);
if (current.GetType().Equals(typeof(Button)))
{
Button btn = (Button)current;
btn.Background = Brushes.DarkBlue;
for (int j = 0; j < VisualTreeHelper.GetChildrenCount(current); j++) // in button
{
current = VisualTreeHelper.GetChild(current, j);
if (current.GetType().Equals(typeof(Border)))
{
for (int k = 0; k < VisualTreeHelper.GetChildrenCount(current); k++) // in border
{
current = VisualTreeHelper.GetChild(current, k);
Border b = (Border)current;
b.Background = new System.Windows.Media.SolidColorBrush((Color)ColorConverter.ConvertFromString("#00BAC0"));
..........
more code
}
}
}
}
}
答案 3 :(得分:-2)
以下示例说明如何使用可扩展应用程序标记语言(XAML)和代码设置Background属性的值:
myBorder1 = new Border();
myBorder1.BorderBrush = Brushes.SlateBlue;
myBorder1.BorderThickness = new Thickness(5, 10, 15, 20);
myBorder1.Background = Brushes.AliceBlue;
myBorder1.Padding = new Thickness(5);
myBorder1.CornerRadius = new CornerRadius(15);