wpf: перезаписать содержимое метки, когда текущий связанный элемент равен нулю - PullRequest
0 голосов
/ 05 августа 2010

Я хочу установить строку Label (или TextBox) по умолчанию, если значение привязки равно нулю.Это прекрасно работает для любого другого свойства, кроме Content, например:

        <Label Content="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/Label}">
            <Label.ContentStringFormat>Details for pump curve: {0}</Label.ContentStringFormat>

            <Label.Style>
                <Style TargetType="Label" BasedOn="{StaticResource header}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/}" Value="{x:Null}">
                            <Setter Property="Background" Value="Red"></Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Label.Style>
        </Label>

. Приведенное выше изменение изменит цвет фона метки на красный, если в pumpCurvesViewSource нет CurrentItem,но то, что я действительно хочу сделать, это изменить фоновый триггер на это:

<Setter Property="Content" Value="No pump curve selected"></Setter>

Но это не работает (я предполагаю, что это потому, что Content уже связан, и мой параметр переопределитсвязывание).

Кто-нибудь знает, как этого добиться?

Ответы [ 3 ]

1 голос
/ 05 августа 2010

вы пробовали TargetNullValue?

<Label Content="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/Label,  TargetNullValue='No pump curve selected'}">
0 голосов
/ 21 октября 2013

самый короткий ответ будет:

<Label Content="{Binding Source={StaticResource pumpCurvesViewSource, FallbackValue=Your Default String}, Path=/Label}">
0 голосов
/ 06 августа 2010

Если найден способ выполнить то же самое, но с немного большим количеством кода, чем мне понравилось:

            <Label Content="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/Label}">
                <Label.ContentStringFormat>Details for pump curve: {0}</Label.ContentStringFormat>
                <Label.Style>
                    <Style TargetType="Label" BasedOn="{StaticResource header}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/, Mode=OneWay, Converter={StaticResource isNullConverter}}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Style>
            </Label>

            <Label Content="No pump curve selected">
                <Label.Style>
                    <Style TargetType="Label" BasedOn="{StaticResource header}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Source={StaticResource pumpCurvesViewSource}, Path=/, Mode=OneWay, Converter={StaticResource isNullConverter}}" Value="False">
                                <Setter Property="Visibility" Value="Collapsed"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Style>
            </Label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...