标签: converters

WPF - 通用 IValueConverter?

我需要转换许多不同的对象,并且我想避免为每个对象编写转换器类。每个对象都继承自一个基类,我需要使用 Id 来获取描述(这是在我对 CacheManager 的调用中处理的)。

对于每个类(我有大约 30 个类),我编写了以下代码:

object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    Dictionary<int, string> codes = CacheManager.CodeLookup<CourtEventCode>();
    int id = 0;
    string result = string.Empty;

    if (int.TryParse(value.ToString(), out id) && id > 0)
    {
        if (codes.ContainsKey(id))
        {
            result = codes[id];
        }
        else
        {
            result = "Unknown";
        }
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,CourtEventCode代表这一类的转换器。有没有一种方法可以从 IValueConverter.Convert 的 targetType 输入派生该类,而不必基本上复制并粘贴该类两打?

预先感谢,
桑尼

.net c# generics wpf converters

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

什么时候默认转换器启动?

使用以下代码,虽然Text属性绑定到DateTime源属性,但我注意到WPF似乎自动将文本转换为DateTime,而不需要编写ValueConverter.有人可以说明这是如何完成的

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:WpfApplication1="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525"
        >    
    <StackPanel>
        <DatePicker Height="25" Name="datePicker1" Width="213" Text="{Binding Path=DueDate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
public class P
    {
        private DateTime? dueDate = DateTime.Now;
        public DateTime? DueDate
        {
            get { return dueDate; }
            set 
            { 
                dueDate = value;
            }
        }
    }

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            P p = new P();
            this.DataContext = p;
        }
    }
Run Code Online (Sandbox Code Playgroud)

wpf converters

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

WPF C# 中的绑定可见性转换器

我有一个集合类型的依赖属性,当它的回调根据计数触发时,我需要设置屏幕上某些控件的可见性。

但控件始终处于折叠状态。根据代码,一个控件始终保持可见。

XAML 绑定是

   <TextBlock Text="106 search results for 'a'" Margin="5,0,100,0" Visibility="{Binding CountLabelVisibleReverse, Converter={StaticResource VisibilityConverter}}"/>
 <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,90,0"  
                            Visibility="{Binding CountLabelVisible, Converter={StaticResource VisibilityConverter}}">
 <TextBlock Text="Sort By"  />
 <ComboBox Style="{StaticResource ComboBoxStyle1}" Width="100" x:Name="ComboBoxSorting" ItemsSource="{Binding SortBy}" />
   </StackPanel>
Run Code Online (Sandbox Code Playgroud)

我的两个属性是

    public bool CountLabelVisible { get; set; }

    public bool CountLabelVisibleReverse { get; set; }
Run Code Online (Sandbox Code Playgroud)

依赖属性回调

   private static void ItemsCollectionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
    {
        var listingUserControl = (obj as ListingUserControl);

        var itemsResult = (eventArgs.NewValue as List<ItemsResult>);
        if (listingUserControl != null && itemsResult != null) …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml binding converters

5
推荐指数
1
解决办法
2万
查看次数

使用 UTF-8 将 Excel (XLS) 转换为 CSV

我已阅读以下有关通过 Google Docs 将 UTF-8 编码(希伯来语)XLS 转换为 CSV 的建议,并且它奏效了。当我用 UTF8 编码在 Sublime2 中打开 CSV 时,希伯来语显示正确。但是,当我尝试使用 SQLyog 将数据导入我的数据库时,在确保我的目标表和导入定义都设置为 UTF8 后,我得到了胡言乱语,例如:×ž×“×¨×©×•× ª 我哪里做错了?

sql xls converters

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

ffmpeg PNG - MP4 - 打开输入文件时出错:参数无效

我正在关注这个 将 PNG 文件转换为 MP4 的可视化项目。

示例代码的唯一变化是我的时间戳以 1 开头。

ffmpeg -r 20 -b 20M -i 示例%01d.png 输出.mp4

这就是返回的结果

ffmpeg 版本 N-53055-g7b43120 版权所有 (c) 2000-2013 FFmpeg 开发人员
建于 2013 年 5 月 14 日 20:43:53,使用 llvm-gcc 4.2.1(LLVM 版本 2336.11.00)
配置:--disable-yasm
libavutil 52.31.100 / 52.31.100
libav编解码器 55.9.100 / 55.9.100
libav 格式 55.7.100 / 55.7.100
libavdevice 55.0.100 / 55.0.100
libavfilter 3.67.100 / 3.67.100
libswscale 2.3.100 / 2.3.100
libsresample 0.17.102 / 0.17.102
**选项b(视频比特率(请使用-b:v))不能应用于输入文件
example%01d.png -- 您正在尝试将输入选项应用于输出文件或
反之亦然。将此选项移至其所属文件之前。
解析输入文件 example%01d.png 的选项时出错。
打开输入文件时出错:参数无效**

ffmpeg converters

5
推荐指数
1
解决办法
2万
查看次数

将头文件 .h 转换为 C#

我有很多头文件(用 C 编写),我想将它们转换为 C# 代码。头文件包含枚举、结构、方法。

我可以手动转换它们,但这需要很长时间,所以我想知道是否有一个工具可以将头文件转换为 C#。

我尝试过PInvoke Interop Assistant,但它仅适用于 /clr 编译的 .dll。

我尝试过SWIG,它在某种程度上有效,它成功地生成了漂亮的枚举,但结构和方法看起来不太好。

还有其他方法可以转换标头 .h 文件吗?

c c# header converters

5
推荐指数
0
解决办法
3541
查看次数

WPF - 数据绑定时是否进行某种隐式转换?

我刚刚注意到,在我的项目中的某些地方,我忘记将 Int/DoubleToStringValueConverter 与 TwoWay 绑定一起使用,但它们仍然在工作。

那么是否存在某种隐式转换?我实际上知道字符串->颜色、颜色->字符串转换,并且有时使用它,但不知道数字->字符串、字符串->数字。那么您能否在某个地方推荐一个文档,让我可以阅读有关何时应该使用转换器以及何时不应该使用转换器的信息?

c# data-binding wpf converters

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

您可以将不透明度应用于系统定义的画笔吗?

我知道 WPF 画笔类有一个 Opacity 属性。我们需要使用系统定义的画笔,但不透明度减半。我们想做这样的事情(这显然是假代码)...

<Border Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}, Opacity=0.5}" />
Run Code Online (Sandbox Code Playgroud)

我们当然不能直接改变系统定义画笔的不透明度,因为这会在任何使用它的地方搞砸。

我们想要做的是以某种方式定义一个转换器,我们使用一个画笔并返回一个更改了不透明度的副本,但是由于这不是绑定,我们不知道在哪里/如何应用转换器. 另外,如果它是动态资源,我们需要确保它跟踪变化。

我们也不能简单地直接在 Border 上设置不透明度,因为它的所有子项也具有相同的降低的不透明度。

我们当前的解决方法不是将内容直接放在边框中,而是将边框及其内容作为网格中的兄弟元素放置在网格中,然后我们在边框上设置不透明度。由于内容现在位于边框的顶部而不是内部,因此它不受不透明度的影响。这只是意味着我们在可视化树中添加了额外的东西,这很烦人,但它确实有效。如果我们可以在 XAML 中简单地调整(一个)系统画笔的不透明度,那就更好了。

wpf xaml converters opacity

5
推荐指数
2
解决办法
2422
查看次数

从 html 转换为 docx 格式时,Pandoc 不渲染 SVG 图像

我使用 pandoc 来转换独立的 html(没有外部依赖),所有必需的 css 和 js 都合并到 html 本身中。HTML 几乎没有通过 javascript 库生成的 svg 图

所述 html 文件在浏览器中打开时呈现良好,但是当转换为 docx 时,docx 文件中缺少 svg 图像。

用于转换的命令,看起来像

pandoc ./something.html -s -o test1.docx
Run Code Online (Sandbox Code Playgroud)

我怀疑它在 javascript 甚至可以渲染这些图像之前转换文件。

感谢帮助

html javascript docx converters pandoc

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

如何使用 opencsv 构建(工作)自定义转换器

我正在使用带有嵌套 bean 结构的 OpenCSV。但是,我需要一个自定义转换器来实现这一点(目前专注于写入 csv 部分)。我环顾四周,但没有找到任何示例来帮助我弄清楚如何使其工作。

我尝试扩展我的子 bean 类,并在主文档中提供了一些转换。但是我的资源已经用完了,我来得最远的是让它抛出一个 CsvBadConverterException。

让我告诉你我有什么。(User 和 UserScore 都实现了 Serializable,以防万一。)父 bean:User

    @CsvBindByName(column = "username")
    private String userName;
    @CsvBindByName(column = "password")
    private String userPassword;
    @CsvBindByName(column = "rememberPassword")
    private boolean rememberPassword;
    @CsvBindByName(column = "rememberUser")
    private boolean rememberUser;
    @CsvCustomBindByName(column = "scores", converter = UserScoreToBean.class)
    private UserScore userScore;

    // Constructors, getters, setters, and other methods
Run Code Online (Sandbox Code Playgroud)

子 bean:UserScore

    @CsvBindByName(column = "totalScore")
    private int totalScore;
    @CsvBindByName(column = "currentScore")
    private int currentScore;
    @CsvBindByName(column = "highestStreak")
    private int highestStreak;

    // Even more basic …
Run Code Online (Sandbox Code Playgroud)

java converters opencsv

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

标签 统计

converters ×10

wpf ×5

c# ×4

xaml ×2

.net ×1

binding ×1

c ×1

data-binding ×1

docx ×1

ffmpeg ×1

generics ×1

header ×1

html ×1

java ×1

javascript ×1

opacity ×1

opencsv ×1

pandoc ×1

sql ×1

xls ×1