0

フォーク リフト (FL) およびその他の機器 (SQL/LINQ を使用) の従業員のトレーニングと評価を管理するための WPF フォームがあるとします。トレーニングのチェックボックスをチェックすると、テキストボックス(日付を入力するため)と評価のためのチェックボックスが表示され、その逆も同様になるように設定しています。

どのトレーニング チェック ボックスをクリックしてコピーし、各機器に貼り付けるかによって、一般的な「チェック済み」の方法を使用できるようにする方法はありますか?

( FLTはフォークライフトレーニング、FLEは評価)

private void Checked(object sender, RoutedEventArgs e)
{
    FLT_txt.Visibility = Visibility.Visible;
    FLE_ck.Visibility = Visibility.Visible;
}

//Basically a reverse of the above, just here for example's sake
private void Unchecked(object sender, RoutedEventArgs e)
{
    FLT_txt.Visibility = Visibility.Hidden;
    FLE_ck.Visibility = Visibility.Hidden;
}

私はそれを混乱させなかったことを願っています。

4

2 に答える 2

1

あなたはこれについて話しているのですか:

<Grid ToggleButton.Checked="Grid_Checked">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <CheckBox Grid.Row="0" Content="1" />
    <CheckBox Grid.Row="1" Content="2" />
    <CheckBox Grid.Row="2" Content="3" />
</Grid>

private void Grid_Checked(object sender, RoutedEventArgs e)
{
    CheckBox checkBox = (CheckBox)e.Source;
    if (checkbox.Content = "1") DoSomething();
    else DoSomethingElse();
}

更新 >>>

今夜は時間がありません...いくつかのヒントがあります...オンラインを調べてください-これを使用すると、プロパティを1つまたは複数のコントロールのプロパティに直接BooleanToVisibilityConverterバインドできます...どこにもイベントハンドラーはありません見た!Checkbox.IsCheckedVisibility

また、 a を使用しGridてコントロールをグループ化し、そのVisibilityプロパティを設定して、すべてのコントロールを一度に表示または非表示にすることができます。それが役立つことを願っています。

于 2013-09-19T15:56:42.587 に答える
0

コントロールの可視性をチェックボックスのチェック状態にバインドする必要があります。コードで MVVM パターンまたはバッキング プロパティを使用しない場合、最も単純な実装は次のとおりです...

XAML で、これを機能させるために必要な静的リソース (コンバーター) を定義してください。コンバーター C# コードが存在する場所の名前空間を追加する必要があります。

<Window.Resources>
    <wpfApplication1:BoolToVisibilityConverter x:Key="BoolToVisibility" />
</Window.Resources>

コンバーターは次のようになります。これは、おそらくすべてのアプリケーションが持つべきものです。

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is bool && !(bool) value)
            return Visibility.Collapsed;
        return Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

コントロールの可視性はブール値ではなく列挙値 (Visibility.Whatever) で表されるため、コンバーターが必要です。「IsChecked」のブール値を適切な列挙値に変換して設定します。

UI でコンバーターを参照して、表示を切り替えます。XAML は次のようになります。

<StackPanel>
   <CheckBox Name="ShowOrHide" Content="Toggle Me!" />
   <TextBox Visibility="{Binding IsChecked, 
                  ElementName=ShowOrHide,
                  Converter={StaticResource BoolToVisibility}}" />
</StackPanel>
于 2013-09-19T16:48:53.420 に答える