#c# #wpf #.net-4.0 #valueconverter
#c# #wpf #.net-4.0 #valueconverter
Вопрос:
Можно ли использовать конвертер / селектор стилей без необходимости использования привязки данных?
Я хочу, чтобы стиль моего объекта менялся при достижении определенного значения.
Вот что у меня есть
<Border Name="watch0_0Border" Grid.Row="0" Grid.Column="0" Style="{StaticResource clockBorderStyle}">
<StackPanel Style="{StaticResource clockStackPanelStyle}">
<TextBlock Name="watch0_0Time" Style="{StaticResource clockTimerStyle}">07:45:23</TextBlock>
<TextBlock Name="watch0_0Description" Style="{StaticResource clockTextStyle}" Text="{Binding ElementName=watch0_0WorkDescription, Path=Text}"></TextBlock>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Name="watch0_0Pause" Margin="5" Click="watch0_0Pause_Click">Pause</Button>
<Button Name="watch0_0SetNewTime" Margin="5" Click="watch0_0SetNewTime_Click">Set new time</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBox Name="watch0_0Hours" Margin="5">0</TextBox>
<TextBox Name="watch0_0Minutes" Margin="5">0</TextBox>
<TextBox Name="watch0_0Seconds" Margin="5">0</TextBox>
</StackPanel>
<TextBox Name="watch0_0WorkDescription" TextAlignment="Center" Margin="5">Work description</TextBox>
</StackPanel>
</Border>
Я хочу изменить фон границы, когда время будет меньше 0.
Комментарии:
1. Это зависит от того, как изменяется значение (например, это автоматически обновляемое значение или оно изменяется пользователем). Как насчет использования триггера / datatrigger / eventtrigger?
2. Почему вам не нравится привязка? Вы можете использовать его с пользовательским значением (не связанным с DataContext)
3. Я обычно также использую привязку, но это только для быстрого проекта. Я хочу изменить фон, когда таймер опустится ниже нуля.
4. @FireFly3000: предоставьте некоторый XAML, который вы уже создали, и свойства ViewModel, которые вы хотите обработать
5. Я не вижу никаких привязок к чему-то вроде TimerValuie, также попробуйте команды вместо обработчиков событий… таким образом, вы можете отделить логику от представления моей логики перемещения из кода в нечто вроде ViewModel в MVVM o
Ответ №1:
Если ваш таймер имеет доступ к главному окну (которое может получить доступ к watch0_0Border) или watch0_0Border напрямую (передавая их при создании timer), то вы должны просто иметь возможность использовать диспетчер пользовательского интерфейса для установки watch0_0Border.BorderBrush (или любого другого свойства), когда таймер достигает нуля.
Комментарии:
1. Именно то, что я искал… Я не знаю, почему я не подумал об этом сам: S