标签: ivalueconverter

WPF DataGridTextColumn - 使用“-”而不是“0”

如何让 aDataGridTextColumn显示'-'(连字符)而不是0

以下是数据网格当前的设置方式:

<Grid>
  <DataGrid x:Name="EmployeeHours"
            AutoGenerateColumns="False"
            ItemsSource="{Binding EmployeeHoursLastWeek}"
            Width="Auto">
    <DataGrid.Columns>
      <DataGridTextColumn Header="PerceptionistID"
                          Binding="{Binding PerceptionistID}"
                          Width="100" />
      <DataGridTextColumn Header="Week Of"
                          Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}"
                          Width="75" />
      <DataGridTextColumn Header="Regular Hours"
                          Binding="{Binding WorkHours}"
                          Width="100" />
      <DataGridTextColumn Header="PTO Hours"
                          Binding="{Binding PTOHours}"
                          Width="100" />
      <DataGridTextColumn Header="Holiday Hours"
                          Binding="{Binding HolidayHours}"
                          Width="100" />
    </DataGrid.Columns>
  </DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

PTOHours 和 HolidayHours 通常为 0,如果任何具有 0 的单元格显示“-”,则可以更轻松地识别具有非 0 值的单元格。

wpf ivalueconverter wpfdatagrid datagridtextcolumn

1
推荐指数
1
解决办法
2719
查看次数

WPF字符串长度转换器

我正在使用转换器检查字符串长度是否大于0.如果它更大我会返回true,否则为false.

一切都很好.但我想知道这是否是转换器的正确方法?

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool error = false;
        if (value != null)
        {
            if (value.ToString().Length > 0)
            {
                error = true;
            }
            else
            {
                error = false;
            }
        }
        return error;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new InvalidOperationException("IsNullConverter can only be used OneWay.");
    }
Run Code Online (Sandbox Code Playgroud)

.net c# wpf string-length ivalueconverter

1
推荐指数
1
解决办法
1762
查看次数

如何在 WPF 中将接口类型作为 ConverterParameter 传递

我希望能够将接口的 Type 对象作为 ConverterParameter 传递给我的类型转换器。我的想法是,我希望转换器根据源值是否实现特定接口返回一个值。

如果我将类型名称作为字符串传递,我有一个方法可以工作,但我宁愿让它成为一个强类型值,以避免潜在的维护问题,并进行编译时检查,而不是依赖运行时的故障。

这是我使用字符串的转换器:

class InterfaceToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value != null)
        {
            var type = value.GetType();
            if (type.GetInterface(parameter as string) != null)
            { return Visibility.Visible; }
        }
        return Visibility.Collapsed;
    }

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

除了上述潜在的维护问题之外,它的效果很好。

这是您在 xaml 中使用它的方式:

<TabItem Header="General" 
         Visibility="{Binding ConverterParameter=IMyType, Converter={StaticResource InterfaceToVisibilityConverter}}">
    <TextBlock Text="Whatever Content Goes here."/>
</TabItem>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,它检查当前的 DataContext …

c# wpf xaml interface ivalueconverter

1
推荐指数
1
解决办法
3785
查看次数

ValueConverter - 绑定到自己

我需要将标签绑定到一个复合值 - 由模型中的几个值组成。我正在尝试使用 ValueConverter 来执行此操作,但我无法弄清楚如何将对象本身传递给 ValueConverter。这是我的代码:在 XAML 中:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:MyApp;assembly=MyApp"
         x:Class="MyApp.SavedDetailsPage">
  <ContentPage.Resources>
      <ResourceDictionary>
          <local:DetailsConverter x:Key="detailsCvt" />
      </ResourceDictionary>
  </ContentPage.Resources>
  ...
    <Label Text="{Binding ???, Converter={StaticResource detailsCvt}}" FontSize="Small" TextColor="Gray" />
  ...
Run Code Online (Sandbox Code Playgroud)

在 DetailsConverter.cs 中:

class DetailsConverter : IValueConverter
{
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        MyModel myModel = (MyModel)value;
        return (myModel.FirstName + " " + myModel.LastName);
    }
    ...
Run Code Online (Sandbox Code Playgroud)

我尝试使用“。” 用于绑定到 self ,但这不起作用。

我通过向 MyModel 添加一个 .This 属性找到了一种解决方法,它可以访问对象本身,因此我可以在 XAML 绑定中传递“This”,但不确定这是否是最好的方法。

提前致谢!

binding ivalueconverter xamarin.forms

1
推荐指数
1
解决办法
1315
查看次数

使用ValueConverter的WPF网格IsEnabled

我有一个带有Grid和TreeView的WPF窗口.Grid的datacontext绑定到树视图上的选定项.但是,因为并非所有treeviewitems都适用,所以如果treviewitem不适用,我想禁用网格.所以,我创建了一个值转换器来进行空检查并返回一个bool.(在这种情况下,适用的项目不会为空)

问题是从未使用过值转换器.我设定了破发点,他们从未被击中过.我有其他价值转换器我正在使用它们都工作得很好.

有什么我想念的吗?

<Grid Grid.Column="1" Grid.Row="0" DataContext="{Binding MyVal}" IsEnabled="{Binding MyVal, Converter={StaticResource NullCheckConverter}}" Margin="2,2,2,2">
Run Code Online (Sandbox Code Playgroud)

并不是说这个问题很重要,但这里是ValueConverter代码:

internal class NullCheckValueConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return !(value == null);
    }

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

    #endregion
}
Run Code Online (Sandbox Code Playgroud)

c# wpf binding ivalueconverter isenabled

0
推荐指数
1
解决办法
2582
查看次数

如何进行复选框检查并取消选中wpf

我在datagrid中选中了复选框

<DataTemplate>
  <CheckBox x:Name="chkActive" IsChecked="{Binding Active, Mode=TwoWay}" 
    Style="{StaticResource checkboxStyleNormal}" IsEnabled="True"/>
 </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

并绑定数据网格

 datagrid1.ItemSource = dtData.DefaultView;
Run Code Online (Sandbox Code Playgroud)

在数据表中,我正在使用Active,0并且1,我想在显示我的复选框时检查Active = 0

网格绑定但我无法绑定复选框.

有人请告诉我如何根据我的情况显示复选框选中/取消选中.

c# wpf ivalueconverter

0
推荐指数
1
解决办法
1324
查看次数