我开始在触摸设备上进行WPF开发。虽然.NET和WPF似乎是一项了不起的技术,但我有点失落。
我正在开发一个通用控件。我定义了一个UserControl,它包含一个Grid,一些按钮和一个SurfaceListBox。在实际的C#-code中,我通过操作listItems-Attribute来处理事件并将新元素添加到列表框中。到目前为止,此工作正常。
现在我想改变列表项的样式 - 如果没有选择它们,我想让它们的背景透明,如果它们是,则我们想要完全变白。不幸的是,下面这段代码根本不起作用。它只是将列表项 text 的背景颜色设置为白色,而不是整个项目。
更新:现在可以了!
<UserControl x:Class="SGEditor.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
xmlns:my="http://schemas.microsoft.com/surface/2008" UseLayoutRounding="True">
<UserControl.Resources>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<Grid>
<my:SurfaceListBox Width="300" Height="300" />
</Grid>
</UserControl>
谢谢!
汉斯
答案 0 :(得分:1)
我不确切知道如何做你想做的事,但我很确定你不能重新分配静态系统值,就像你在x:Key
中尝试做的那样。这只是用于稍后在xaml中引用资源的名称,如MyBackgroundColor
或其他。
我认为您需要做的是在控件样式中使用触发器,为要更改的元素设置适当的属性。希望其他人能够更多地了解这一点,因为我很少做那些花哨的事情。 =)