На приведенном ниже рисунке вы можете увидеть пользовательский элемент управления, который я создаю в настоящее время, с целью как можно большего изучения всего процесса создания контроля.Где я должен определять и устанавливать эти стили
В настоящее время я пытаюсь как упростить XAML, эффективен рефакторинг повторяющихся элементов стиля в отдельный стиль и достижения отключенного искать изображения, если кнопки, в которых они расположены отключены.
В xaml ниже вы можете увидеть как стиль кнопки, который я создал, так и триггер данных для изображения. Теоретически оба применяются ко второй кнопке слева, но совершенно ясно, что они не существуют.
Я думаю, что основные определения стиля правильные, но может быть, они находятся в неправильном месте. Может ли кто-нибудь посоветовать, что я сейчас делаю неправильно.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ViewToLearn.WpfControls">
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type UIElement}, AncestorLevel=1}, Path=IsEnabled}"
Value="False">
<Setter Property="Opacity"
Value="0.2"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type Button}">
<Setter Property="BorderBrush"
Value="Transparent" />
<Setter Property="Background"
Value="Transparent" />
<Setter Property="BorderThickness"
Value="0" />
<Setter Property="Margin"
Value="4" />
</Style>
<Style TargetType="{x:Type local:VtlDataNavigator}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:VtlDataNavigator}">
<StackPanel Orientation="Horizontal">
<Button BorderBrush="Transparent"
Background="Transparent"
BorderThickness="0">
<StackPanel Margin="4">
<Image Source="/ViewToLearn.WpfControls;component/Resources/Images/button_rounded_blue_first24.png" />
</StackPanel>
</Button> <!-- This is the button that should be influenced by the style and trigger defined above, but clearly it isn't -->
<Button IsEnabled="False">
<StackPanel Margin="4">
<Image Source="/ViewToLearn.WpfControls;component/Resources/Images/button_rounded_blue_previous24.png" />
</StackPanel>
</Button>
<TextBox Text="{Binding Path=RecordIndex,RelativeSource={RelativeSource TemplatedParent}}"
VerticalAlignment="Center"
IsReadOnly="True"
BorderThickness="0"
Margin="4" />
<TextBlock Text="of"
VerticalAlignment="Center"
Margin="4" />
<TextBlock Text="{Binding Path=RecordCount,RelativeSource={RelativeSource TemplatedParent}}"
VerticalAlignment="Center"
Margin="4" />
<Button BorderBrush="Transparent"
Background="Transparent"
BorderThickness="0">
<StackPanel Margin="4">
<Image Source="/ViewToLearn.WpfControls;component/Resources/Images/button_rounded_blue_next24.png" />
</StackPanel>
</Button>
Эммануэль, спасибо за исчерпывающий ответ. Что касается ваших точек внизу, я знаю, что мне не нужно устанавливать свойства для каждой кнопки, поэтому я хочу стиль, но на одной кнопке, которая теоретически должна быть установлена, она не применялась.Это начало жизни как пользовательский элемент управления, теперь я хочу превратить его в пользовательский элемент управления, чтобы узнать, как это сделать, и потому что он должен быть более многоразовым. Я подозреваю, что, возможно, лучше начать это в Blend, а не в визуальной студии, но я знаю, смешайте, я этого не делаю. Теперь я переработаю ваш код и отчитаюсь. –
Вот мой код, пытающийся воспроизвести то, что вы показали: http://1drv.ms/1ML5iZv. Это должно помочь. Поскольку вы не посещаете анимацию и не нуждаетесь в выборочных данных, Blend не нужен. –