text = Text(app, state='disabled', width=44, height=5)
До и после вставки измените состояние, иначе оно не будет обновлено
text.configure(state='normal')
text.insert('end', 'Some Text')
text.configure(state='disabled')
Я столкнулся с подобным ограничением с DataTriggers, и будет казаться, что можно только проверить на равенство. Самая близкая вещь я видел это, могла бы помочь Вам, техника для того, чтобы сделать другие типы сравнений кроме равенства.
Это сообщение в блоге описывает, как сделать сравнения, такие как LT, GT, и т.д. в DataTrigger.
Это ограничение DataTrigger может работаться вокруг в некоторой степени при помощи Преобразователя для массирования данных в специальное значение, которое можно тогда сравнить с, как предложено в ответе Robert Macnee.
Можно использовать IValueConverter для этого:
<TextBlock>
<TextBlock.Resources>
<conv:IsNullConverter x:Key="isNullConverter"/>
</TextBlock.Resources>
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeField, Converter={StaticResource isNullConverter}}" Value="False">
<Setter Property="TextBlock.Text" Value="It's NOT NULL Baby!"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
, Где IsNullConverter определяется в другом месте (и conv установлен сослаться на его пространство имен):
public class IsNullConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value == null);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("IsNullConverter can only be used OneWay.");
}
}
А более общее решение состояло бы в том, чтобы реализовать IValueConverter, который проверяет на равенство с ConverterParameter, таким образом, можно проверить по чему-либо, и не просто пустому указателю.
Это - определенный обман, но я просто установил стиль по умолчанию и затем переопределил его с помощью DataTrigger, если значение является нулевым...
<Style>
<!-- Highlight for Reviewed (Default) -->
<Setter Property="Control.Background" Value="PaleGreen" />
<Style.Triggers>
<!-- Highlight for Not Reviewed -->
<DataTrigger Binding="{Binding Path=REVIEWEDBY}" Value="{x:Null}">
<Setter Property="Control.Background" Value="LightIndianRed" />
</DataTrigger>
</Style.Triggers>
</Style>