- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 WPF 时遇到了这个恼人的问题,我无法解决这个问题。我正在尝试创建的是一个非常基本的绘图程序实现(这是一项学校作业),带有可移动的工具窗口,例如在 Photoshop 中。
我已经设法弄清楚我可以使用这个元素“Thumb”来实现简单的拖动功能。由于 Thumb 元素本身不可见,并且我用作容器的对象(DockPanel)没有 DragDelta 属性,我只是创建了一个 ControlTemplate 并将其附加到 Thumb,所以现在我有一个可拖动的颜色工作正常的选择器。到目前为止一切顺利。
但是,当我想创建额外的 ControlTemplates 以用于我计划使用的其他 Thumb 元素时,问题就出现了(我得到错误:属性“VisualTree”被设置了不止一次。)。这就是我需要帮助的。我已将我的整个 Window.Resources 标签粘贴到此处,这样您就可以看到发生了什么。
<Window.Resources>
<Style x:Key="toolBoxBtn" TargetType="Button">
<Setter Property="Width" Value="60" />
<Setter Property="Height" Value="60" />
<Setter Property="Margin" Value="5" />
<Setter Property="DockPanel.Dock" Value="Top" />
</Style>
<Style x:Key="style1" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<DockPanel Background="#e6e6e6" HorizontalAlignment="Left" Margin="0" Height="auto" Width="auto" Canvas.Left="640" Canvas.Top="8">
<Label VerticalAlignment="Top" DockPanel.Dock="Top" Background="#282828" Foreground="white" Content="Colors" HorizontalAlignment="Stretch" Width="auto" Height="auto" />
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="7" VerticalAlignment="Center">
<Rectangle DockPanel.Dock="top" Name="red" Fill="Red" Height="20" Width="20" Stroke="Black" MouseDown="getColor" />
<Rectangle DockPanel.Dock="top" Name="blue" Fill="Blue" Height="20" Width="20" Stroke="Black" MouseDown="getColor"/>
<Rectangle DockPanel.Dock="top" Name="green" Fill="GreenYellow" Height="20" Width="20" Stroke="Black" MouseDown="getColor"/>
<Rectangle DockPanel.Dock="top" Name="customColorSlot1" Fill="White" Height="20" Width="20" Stroke="Black" MouseDown="getColor" />
<Rectangle DockPanel.Dock="top" Name="customColorSlot2" Fill="White" Height="20" Width="20" Stroke="Black" MouseDown="getColor"/>
<Rectangle DockPanel.Dock="top" Name="customColorSlot3" Fill="White" Height="20" Width="20" Stroke="Black" MouseDown="getColor"/>
</StackPanel>
<GroupBox Header="Selected Color">
<Rectangle Name="currentColor" Fill="White" Height="40" Width="40" Stroke="Black" MouseDown="test"/>
</GroupBox>
</StackPanel>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="fillTool" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Ellipse HorizontalAlignment="Left" Height="19" Margin="310,330,0,0" VerticalAlignment="Top" Width="19" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="12" Margin="317,316,0,0" VerticalAlignment="Top" Width="12" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="8" Margin="307,320,0,0" VerticalAlignment="Top" Width="7" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="3" Margin="317,302,0,0" VerticalAlignment="Top" Width="3" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="5" Margin="311,310,0,0" VerticalAlignment="Top" Width="5" Fill="Blue"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
这可能是什么问题?
最佳答案
ControlTemplate
只能包含一个 child 。尝试将其更改为 Canvas
<Style x:Key="fillTool" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Canvas>
<Ellipse HorizontalAlignment="Left" Height="19" Margin="310,330,0,0" VerticalAlignment="Top" Width="19" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="12" Margin="317,316,0,0" VerticalAlignment="Top" Width="12" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="8" Margin="307,320,0,0" VerticalAlignment="Top" Width="7" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="3" Margin="317,302,0,0" VerticalAlignment="Top" Width="3" Fill="Blue"/>
<Ellipse HorizontalAlignment="Left" Height="5" Margin="311,310,0,0" VerticalAlignment="Top" Width="5" Fill="Blue"/>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
关于c# - 如何在一个 XAML 文件中使用多个 ControlTemplates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389695/
我知道必须有一个简单的答案,但我找不到。 我有一个名为 HoverButton 的按钮样式.
我有一个 NavigationMenuControl用ObservableCollection .一切正常,但是 Style在我的 HtMenuIcon不触发控制。 Visibility在哪里被正确更
我想在运行时定义一个ControlTemplate。这可能吗?我注意到ControlTemplate类的VisualTree属性。我还注意到它使用FrameworkElementFactory类。但是
使用 d:DataContext 可以轻松地为 DataContext 提供设计时数据但是用 {TemplateBinding} 引用的控件属性呢?或 {RelativeSource Template
ControlTemplate 如何处理数据上下文? 使用以下模板 与控制
假设我们有一个非常“长 XAML”ControlTemplate对于我们的Control . 我们想要只需在模板中添加 1 个按钮 . MSDN 声称“没有办法只替换控件的可视化树的一部分”。 我真的
有用的东西 我需要设置作为 StackPanel 子项的某种类型的控件的样式。我正在使用: ... ... 这很好用!每个 TextBlock
我有一个包含以下代码的 xaml 文件:
我想定义一个 ToggleButton,它在选中时以红色前景(例如)显示,而不是按下按钮的默认外观。 我看到视觉状态作为命名元素在 ToggleButton 的 ControlTemplate 中维护
我有一个 ListView,它使用 DataTemplate 呈现每个项目,每个项目都有一个编辑和删除按钮。这两个按钮是模板化的,因此它们使用 Path 来显示图标,并在鼠标悬停时使用 Storybo
....
我有一个 Telerik Tile 的 ControlTemplate,我正在覆盖如下: 我的用户控件如下所示:
我有一个按钮控制模板。我想制作圆角的按钮。我该怎么做? 我尝试使用 CornerRadius 作为边框中的按钮,但它不起作用。按钮的背景已设置为具有角边框的图像,并且按钮看起来很糟糕,因为我无法为按钮
我在 WPF 中创建了这个用户控件 当我编译这个时,我收到以下错误。 “UserControl1” ControlTemplate Tar
我有一个资源字典,其中包含我的窗口的样式。在这种风格中,我定义了模板,并在那里定义了很多东西。除其他外,我定义了一个 Storyboard来为模板中定义的某些事物制作动画。它看起来像这样:
我目前正在尝试找出如何在其他控件模板中重用模板(如标题所述)。我想做的是制作一堆按钮,它们都略有不同,但有几个相似的功能。它们都共享几个相同的图形元素,并具有处理这些图形元素的相同触发器。我希望做的是
我有一个从 slider 派生的类,它使用自定义控件模板并添加了一些依赖属性。我想根据新属性在模板中触发触发器。 例如,我有一个名为 ThumbIsVisible 的新依赖属性,当它设置为 false
我想根据控件的状态更改/动画自定义按钮控件模板的 Foreground 属性。 在 RC0 之前,我设置了 ContentPresenter 的前景,给它一个 x:Name,并在 VisualStat
我已决定尝试自定义 Menu 和 MenuItem 的默认控件模板的许多方面。在 Visual Studio 中,我选择了菜单,在属性面板中找到了"template",然后选择了“转换为新资源...”
我有一个非常大的 ControlTemplate(200 多行),里面有许多嵌套控件。我需要重用此模板,只需对其中一个嵌套控件(复选框的可见性)进行少量更改。显然,我不想复制粘贴到新的 Control
我是一名优秀的程序员,十分优秀!