使用Binding转换器时非常常见..我总能找到自己
然后我终于可以开始实施我的新转换器了。
在此之后,我还必须将此命名空间添加到xaml文件中,并在引用之前将其添加到资源中。我这样做了一百万次,这可能是最慢的方式,所以我的问题就是......
在Visual Studio中创建转换器的最快方法是什么?
答案 0 :(得分:11)
你当然可以节省时间:
- 复制旧的IValueConverter或IMultiValueConverter
- 更改名称空间和类名
- 删除旧代码
请这样做:
FooConverter
)IValueConverter
: IValueConverter
IValueConverter
,请按 Ctrl + 。打开智能标记菜单Visual Studio将自动创建必要的方法存根,您只需要编写实现。
答案 1 :(得分:9)
可能最适合您的资源是Visual Studio模板。您可以创建自己的,因此您可以右键单击/创建新项目/转换器,它将存储您手动执行的所有操作。
如果您确实创建了类似的东西,那么通过codeplex或类似的东西与社区分享可能是一个很棒的小项目。
答案 2 :(得分:2)
我喜欢这个问题和价值转换器,所以我有一些可能对你没有帮助的贡献,Meleak,但希望那些没有这种严格的风格指南,因此可以在一个文件中放置多个转换器:一个片段,为值转换器存根创建代码。
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Value Converter Stub</Title>
<Shortcut>vc</Shortcut>
<Description>Code snippet for a value converter stub</Description>
<Author>H.B.</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>from</ID>
<ToolTip>The source type.</ToolTip>
<Default>object</Default>
</Literal>
<Literal>
<ID>to</ID>
<ToolTip>The target type.</ToolTip>
<Default>object</Default>
</Literal>
<Literal>
<ID>convertername</ID>
<ToolTip>Name of the converter.</ToolTip>
<Default>My</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[[ValueConversion(typeof($from$), typeof($to$))]
public class $convertername$Converter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
$from$ input = ($from$)value;
$to$ output;
throw new NotImplementedException();
return output;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
$to$ input = ($to$)value;
$from$ output;
throw new NotImplementedException();
return output;
}
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
将此保存为vc.snippet
(或扩展名为snippet
的其他内容)在Visual Studio的代码段文件夹中(适用于x64上的VS2010:"%ProgramFiles% (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Visual C#"
)。您还可以通过Tools -> Code Snippet Manager...
。
要使用它,只需键入vc
并按Tab键两次,然后选中两个类字段以填充它们。
您可能需要为ValueConversion
- 属性和IValueConverter
添加两个引用。
上面的代码片段非常详细,所以这里的代码更轻(关键字是vcl
),它省略了属性和方法框架,只有一个可编辑的字段直接设置完整的类名:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Value Converter Stub (Light)</Title>
<Shortcut>vcl</Shortcut>
<Description>Code snippet for a light value converter stub</Description>
<Author>H.B.</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>convertername</ID>
<ToolTip>Name of the converter.</ToolTip>
<Default>My</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[public class $convertername$Converter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
$end$
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
答案 3 :(得分:0)
将所有转换器类保存在一个文件中(即:Converters.cs),然后当您需要添加一个时,您可以执行相同的复制/粘贴,但您不必添加新项目,重命名空间,添加新命名空间等。
至少,这就是我做的......
答案 4 :(得分:0)
我已将Value Converter项目模板添加到Visual Studio 2010: 从项目上下文菜单,添加...新项目...在线模板文件夹... Silverlight文件夹...值转换器。