Изменение TextBox, при переключении между TabItem

220
13 мая 2018, 06:20

У меня есть TabControl, с несколькими TabItem. В них есть TextBox, которые забинжены на одну и ту же переменную. Мне нужно, чтобы при переключении между TabItem, эти Text в TextBox стирался.

Answer 1

Подключите библиотеку System.Windows.Interactivity как написано в этом ответе и ознакомьтесь с этим топиком (вопросом и ответом).

Теперь всё просто, ViewModel:

class MainVm : Vm
{
    string text;
    public string Text
    {
        get => text;
        set => Set(ref text, value);
    }
    public DelegateCommand ClearTextCommand { get; }
    public MainVm()
    {
        ClearTextCommand = new DelegateCommand(_ => Text = "");
    }
}

View:

<TabControl>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <i:InvokeCommandAction Command="{Binding ClearTextCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <TabItem Header="Tab 1">
        <TextBox Text="{Binding Text}" VerticalAlignment="Top">
            <i:Interaction.Behaviors>
                <c:TextBoxLostFocusUpdateBindingBehavior/>
            </i:Interaction.Behaviors>
        </TextBox>
    </TabItem>
    <TabItem Header="Tab 2">
        <TextBox Text="{Binding Text}" VerticalAlignment="Top">
            <i:Interaction.Behaviors>
                <c:TextBoxLostFocusUpdateBindingBehavior/>
            </i:Interaction.Behaviors>
        </TextBox>
    </TabItem>
</TabControl>

Если же аббревиатура MVVM для вас ничего не значит, то вы можете просто подписаться на PreviewLostKeyboardFocus ваших TextBoxов и обновлять привязку в подписчике (это описано в вышеуказанном ответе). Затем подписаться на SelectionChanged TabControlа, и в подписчике просто очищать свойство, привязанное к TextBoxам.

READ ALSO
Ход компьютера в крестики-нолики

Ход компьютера в крестики-нолики

Как реализовать ход компьютера (не в плане реализации логики хода компьютера), а именно логику вызова его хода? Те

298
как к visual studio c# подключить базы данных SQL Server”

как к visual studio c# подключить базы данных SQL Server”

как к visual studio c# подключить базы данных SQL Server?

287
Конфигурационные файлы в Stateless/Statefull сервисов Azure Fabric Services

Конфигурационные файлы в Stateless/Statefull сервисов Azure Fabric Services

Не могли бы вы рассказать, какие есть конфиги подходящие для хранения кастомных ветвей вида

254
MiFare 1K запись данных, Exeption

MiFare 1K запись данных, Exeption

Пытаюсь записать данные на карту MiFare Classic 1K, выдаёт исключение Exeption:Unable to login in sector 2 with key key B

228