Привязка флажка WPF

Вы можете использовать следующий код, чтобы ваш код выглядел лучше и избежал ада обратного вызова

app.post('/', async (req, res) => {
    var filename = `outputs/${Date.now()}_output.json`;
    let trainInput = req.files.trainInput;
    let trainOutput = req.files.trainInput;
    let testInput = req.files.trainInput;
    try {
        var result1 = await trainInput.mv(`inputs/${req.body.caseName}/train_input.csv`);
        var result2 = await trainInput.mv(`inputs/${req.body.caseName}/train_output.csv`);
        var result2 = await testInput.mv(`inputs/${req.body.caseName}/test_input.csv`);
        res.send('success');
    }
    catch (error) {
        res.status(500).send(error);
    }
});
72
задан lisp 3 February 2014 в 09:00
поделиться

3 ответа

Для этого вам понадобится свойство зависимости:

public BindingList<User> Users
{
    get { return (BindingList<User>)GetValue(UsersProperty); }
    set { SetValue(UsersProperty, value); }
}

public static readonly DependencyProperty UsersProperty =
    DependencyProperty.Register("Users", typeof(BindingList<User>), 
      typeof(OptionsDialog));

После этого готово, вы привязываете флажок к свойству зависимости:

<CheckBox x:Name="myCheckBox"
          IsChecked="{Binding ElementName=window1, Path=CheckBoxIsChecked}" />

Для того, чтобы это работало, вы должны назвать свой Window или UserControl в его теге открытия и использовать это имя в параметре ElementName.

С помощью этого кода всякий раз, когда вы измените свойство на стороне кода, вы измените текстовое поле. Кроме того, всякий раз, когда вы устанавливаете / снимаете отметку с текстового поля, свойство зависимости также будет изменяться.

РЕДАКТИРОВАТЬ:

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

Весь код:

XAML:

<Window x:Class="StackOverflowTests.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" x:Name="window1" Height="300" Width="300">
    <Grid>
        <StackPanel Orientation="Vertical">
            <CheckBox Margin="10"
                      x:Name="myCheckBox"
                      IsChecked="{Binding ElementName=window1, Path=IsCheckBoxChecked}">
                Bound CheckBox
            </CheckBox>
            <Label Content="{Binding ElementName=window1, Path=IsCheckBoxChecked}"
                   ContentStringFormat="Is checkbox checked? {0}" />
        </StackPanel>
    </Grid>
</Window>

C #:

using System.Windows;

namespace StackOverflowTests
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public bool IsCheckBoxChecked
        {
           get { return (bool)GetValue(IsCheckBoxCheckedProperty); }
           set { SetValue(IsCheckBoxCheckedProperty, value); }
        }

        // Using a DependencyProperty as the backing store for 
         //IsCheckBoxChecked.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty IsCheckBoxCheckedProperty =
            DependencyProperty.Register("IsCheckBoxChecked", typeof(bool), 
            typeof(Window1), new UIPropertyMetadata(false));

        public Window1()
        {             
            InitializeComponent();
        }
    }
}

Обратите внимание, что единственным скрытым кодом является свойство зависимости. К нему привязаны и метка, и флажок. Если флажок изменится, метка также изменится.

50
ответ дан 24 November 2019 в 12:39
поделиться

Вы должны сделать привязку двунаправленной:

<checkbox IsChecked="{Binding Path=MyProperty, Mode=TwoWay}"/>
72
ответ дан 24 November 2019 в 12:39
поделиться

если у вас есть свойство "MyProperty" в вашем классе данных, вы привязываете IsChecked следующим образом .... (конвертер не является обязательным, но иногда он вам нужен)

<Window.Resources>
<local:MyBoolConverter x:Key="MyBoolConverterKey"/>
</Window.Resources>
<checkbox IsChecked="{Binding Path=MyProperty, Converter={StaticResource MyBoolConverterKey}}"/>
4
ответ дан 24 November 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: