小编slu*_*ter的帖子

以编程方式访问ResourceDictionary项

我有一个名为"MySilverlightControls"的Silverlight控件组件.几个文件夹进入该程序集我有一个类,它从第三方供应商扩展一个网格列,我们称之为"MyImageColumn.cs".

我还创建了一个名为的资源字典Generic.xaml,它位于Themes程序集的文件夹中.在那个资源字典中,我定义了一个名为MyImageColumnTemplate的ControlTemplate :

<ControlTemplate x:Name="MyImageColumnTemplate" >
    <Grid Margin="8,8,4,4" MaxHeight="32" MaxWidth="32">
        <Grid.Resources>
            <localGrid:StatusColumnImageConverter x:Key="ImageContentConverter"/>
        </Grid.Resources>
        <Border Margin="5,5,0,0" Background="Black" Opacity="0.15" CornerRadius="5" />
        <Border Background="#FF6E6E6E" CornerRadius="4,4,4,4" Padding="4" Margin="0,0,5,5">
            <Border Background="White" CornerRadius="2,2,2,2" Padding="3">
                <Image Source="{Binding EditValue, Converter={StaticResource ImageContentConverter}}" Stretch="Uniform"/>
            </Border>
        </Border>
    </Grid>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

我的问题是:从MyImageColumn,我如何以编程方式引用/加载此控件模板,以便将其分配给列上的属性?我希望使用类似这样的语法:

ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];
Run Code Online (Sandbox Code Playgroud)

但是这总是返回null.当我在Reflector中加载程序集时,我看到Generic.xaml文件在那里,资源的名称是MySilverlightControls.g.resources,并且其中的路径是themes/generic.xaml.

我怎样才能获得此资源字典中的各个项目?

silverlight resources resourcedictionary controltemplate silverlight-3.0

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

每页ASPxGridView行数

如何将每页的最大行数设置为5?默认值为10.

<SettingsPager PageSize="5"> 
Run Code Online (Sandbox Code Playgroud)

......不起作用

感谢帮助

c# asp.net devexpress

16
推荐指数
3
解决办法
4万
查看次数

在C#中的类上面出现的Guid属性是什么?

我最近选择了一些C#代码,其中一个类上面有一个Guid属性.我不明白这是什么或它用于什么.

有人可以给我一个简要的概述,或者只是指向一些提供更多信息的文章的方向?

谢谢!

c# com-interop

16
推荐指数
3
解决办法
8760
查看次数

如何在Value转换器中处理异常,以便可以显示自定义错误消息

我有一个文本框绑定到具有类型Timespan属性的类,并编写了一个值转换器将字符串转换为TimeSpan.

如果在文本框中输入非数字,我希望显示自定义错误消息(而不是默认的"输入字符串格式错误").

转换器代码是:

    public object ConvertBack(
        object value,
        Type targetType,
        object parameter,
        CultureInfo culture)
    {
        try
        {
            int minutes = System.Convert.ToInt32(value);
            return new TimeSpan(0, minutes, 0);
        }
        catch
        {
            throw new FormatException("Please enter a number");
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在XAML绑定中设置了'ValidatesOnExceptions = True'.

但是,我遇到了以下MSDN文章,它解释了为什么以上内容不起作用:

"数据绑定引擎不会捕获由用户提供的转换器抛出的异常.Rinit方法抛出的任何异常,或者Convert方法调用的方法抛出的任何未捕获的异常都被视为运行时错误"

我已经读过'ValidatesOnExceptions确实捕获TypeConverters中的异常,所以我的具体问题是:

  • 您何时可以在ValueConverter上使用TypeConverter
  • 假设TypeConverter不是上述问题的答案,我如何在UI中显示我的自定义错误消息

data-binding wpf ivalueconverter

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

IE8浏览器模式和标准模式

我需要强制IE8显示如下:

  1. 浏览器模式:Internet Explorer 8

  2. 文档模式:IE8标准

我添加了此标记,但它只影响文档模式,而不影响浏览器模式.如何覆盖浏览器模式以确保页面始终以IE8浏览器模式显示?

<meta http-equiv="X-UA-Compatible" content="IE=8" />
Run Code Online (Sandbox Code Playgroud)

browser internet-explorer mode internet-explorer-8

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

osx上的编译错误"未定义的符号"

我在osx上尝试一个非常简单的cpp程序只是为了让自己熟悉osx平台,所以我很惊讶地遇到任何错误信息.

这是代码:

#include <iostream> 
using namespace std; 
int main() { 
  cout << "Hello, world!" << endl; 
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

我通过运行编译它

gcc -Wall hello.cpp -o hello
Run Code Online (Sandbox Code Playgroud)

然后我得到这个'未定义的符号'消息:

Undefined symbols:
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      _main in ccA9oElQ.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ccA9oElQ.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from:
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const", referenced from:
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, …
Run Code Online (Sandbox Code Playgroud)

c++ macos g++

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

将URI打包到resx文件中嵌入的图像

如何为资源文件中的图像构造包URI?

我有一个名为的程序集MyAssembly.Resources.dll,它有一个名为Images的文件夹,然后在那里有一个名为Assets.resx的资源文件.此资源文件包含我的图像(称为MyImage.png).我的代码行是:

uri = new Uri("pack://application:,,,/MyAssembly.Resources,Culture=neutral,PublicKeyToken=null;component/Images/Assets/MyImage.png");
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将此URI提供给新BitmapImage的构造函数时,我会收到带有该消息的IOException

找不到资源'images/assets/myimage.png'.

请注意,我在同一个程序集中有其他松散图像,我可以使用包URI检索正常,这些图像的构建操作设置为资源但它们没有嵌入到resx文件中.我应该在路径中包含resx文件的名称吗?

(我希望在resx文件中嵌入图像,以便我可以利用UI文化设置来检索正确的图像(图像包含文本)).

wpf resources uri image internationalization

15
推荐指数
3
解决办法
6564
查看次数

使用out参数反映静态重载方法

我有一些问题,通过反射调用带有out参数的重载静态方法,并会欣赏一些指针.

我期待动态地创建类型像System.Int32或者System.Decimal,然后调用静态TryParse(string, out x)方法就可以了.

以下代码有两个问题:

  • t.GetMethod("TryParse", new Type[] { typeof(string), t } ) 无法返回我期望的MethodInfo

  • mi.Invoke(null, new object[] { value.ToString(), concreteInstance })似乎成功但没有将out参数concreteInstance设置为已解析的值

交织到此函数中,您可以看到一些临时代码,演示如果type参数设置为应该发生什么System.Decimal.

public static object Cast(object value, string type)
{
    Type t = Type.GetType(type);
    if (t != null)
    {
        object concreteInstance = Activator.CreateInstance(t);
        decimal tempInstance = 0;

        List<MethodInfo> l = new List<MethodInfo>(t.GetMethods(BindingFlags.Static | BindingFlags.Public));

        MethodInfo mi;
        mi = t.GetMethod("TryParse", new Type[] { typeof(string), t } );  //this …
Run Code Online (Sandbox Code Playgroud)

c# reflection static-methods

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

包含方法的数组

我想知道你是否可以创建一个包含方法的数组或List <>.我不想使用开关或许多if语句.

谢谢

c# arrays methods

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

从同一应用程序读取和写入x86和x64注册表项

我正在运行编译为x86的应用程序,它运行在64位Windows上.

为了解决ClickOnce文件关联的问题,我想从注册表的x86视图中读取一些CLSID值,然后将它们写入x64视图.

要清楚,这意味着从x86应用程序我想同时从x86注册表视图读取,然后写入x64注册表视图.我想取下我找到的值HKEY_CURRENT_USER\Software\Classes\CLSID\{my clsid}并将其写入HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{my clsid}.

我该怎么做?使用a RegistryView会产生意想不到的结果.例如,此OpenSubKey调用返回null:

keyPath = @"Software\Classes\CLSID\" + clsid;
var regularx86View = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
var regularClassKey = regularx86View.OpenSubKey(keyPath, RegistryKeyPermissionCheck.ReadSubTree);
Run Code Online (Sandbox Code Playgroud)

如果我使用RegistryView.RegistryDefaultRegistryView.Registry64代替它返回密钥 - 但我希望它在使用时返回null,Registry64因为在x64视图中不存在该密钥,并且不应该发生重定向.

使用RegistryView适当的东西,或者我应该直接使用WinAPI?

.net c# registry x86-64

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