У меня есть текстовое поле, окруженное рамкой с закругленными углами. Оба они имеют одинаковый цвет фона, чтобы они отображались как единый блок ввода данных. Когда пользователь нажимает текстовое поле, фон текстового поля и цвет изменения границы. У меня это работает, когда стиль находится в моем MainWindow. Тем не менее, я пытаюсь отвлечь весь мой стиль от XAML в MainWindow до центрального ресурсного словаря. При этом я обнаружил, что DataTrigger, который меняет цвет фона на границе, не работает, из-за того, что ElementName больше не находится в области видимости (по крайней мере, я думаю, что это проблема). Я попытался упростить ситуацию, выполнив это в тестовом проекте/решении, но не может найти способ заставить триггер данных работать. У меня просто два файла XAML. Один из них - мой MainWindow, другой - словарь ресурсов. MainWindow XAML выглядит следующим образом:Как установить ElementName и Path на DataTrigger из отдельного ресурсного словаря XAML (другой файл)
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary Source="/MainSkins.xaml"/>
</Window.Resources>
<Grid HorizontalAlignment="Left" Width="307" Margin="83,0,0,0">
<Border Style="{StaticResource AnimatedInputTextBoxBorder}"
Margin="10,76,10,151">
<TextBox Name="txtTransitRoutingNumber" Style="{StaticResource
AnimatedInputTextBox}"
HorizontalAlignment="Left" Height="73" Margin="9,9,0,0"
TextWrapping="Wrap" Text=""
VerticalAlignment="Top"
Width="267"/>
</Border>
</Grid>
</Window>
А вот мой сайт Словарь, который, как я упоминается выше, в совершенно другой файл с MainWindow.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1">
<Style x:Key="AnimatedInputTextBoxBorder" TargetType="{x:Type Border}">
<Setter Property="Background" Value="#DADADA"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="CornerRadius" Value="15"/>
<Setter Property="BorderBrush" Value="#DADADA"/>
<Style.Triggers>
<!--THIS DATA TRIGGER IS NOT WORKING-->
<DataTrigger Binding="{Binding Path=IsFocused}" Value="true">
<Setter Property="Background" Value="#C2E4F6" />
<Setter Property="BorderBrush" Value="#C2E4F6"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="AnimatedInputTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#DADADA"/>
<Setter Property="Foreground" Value="#000000" />
<Setter Property="BorderThickness" Value="0"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="#C2E4F6"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
Любая помощь будет очень ценится , поскольку я являюсь новичком, когда дело доходит до XAML.
Если бы это было, я бы всю эту функциональность всего шаблона стиля TextBox и отказаться от отдельных ресурсов (и отдельные Lookups в результате этого). –
Спасибо, Chris W. Это действительно помогло. С твоим предложением я смог найти работу. Я опубликую свое решение здесь, чтобы другие увидели. Спасибо Майку .... –
Прохладный! Я уверен, что это было не так полезно, как пример, который я бы хотел, чтобы я успел сделать, но я рад, что вы нашли средство! –