小编use*_*236的帖子

全球尝试捕获

我知道尝试捕获已经讨论了很多,但我还没有找到解决我的问题的方法.

我正在编写一个Silverlight应用程序,其中每个异常都应该生成一个MessageBox,上面写着"抱歉给您带来的不便".

由于我无法保证我的代码可以免除异常,我的同事已经指示我尝试捕获每种方法(几百个),如下所示:

public void Method1()
{
    try
    {
        ...
    }
    catch (Exception e)
    {
        MessageBox.Show("Something went wrong, we apologize for the inconvenience. \n" + e.Message);
    }
}

public void Method2()
{
    try
    {
        ...
    }
    catch (Exception e)
    {
        MessageBox.Show("Something went wrong, we apologize for the inconvenience. \n" + e.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它似乎太过分了.我已经读过一个不会以这种方式使用try catch加上会有很多重复的代码加上代码将被混淆并且难以阅读.

有没有像我可以使用的全球尝试捕捉的替代方案?

感谢名单!/麦克风

c# silverlight global try-catch

8
推荐指数
3
解决办法
4999
查看次数

将Silverlight TabControl绑定到集合

我的ViewModel中有一个模型对象集合.我希望能够将TabControl绑定到这些并使用DataTemplate从Model对象中提取信息.当我尝试这样做时,我得到errormessage:无法将Model类型的对象强制转换为TabItem类型的对象.花了一些时间寻找解决方案后,我发现了以下内容:

  1. Silverlight TabControl已损坏.使用ListBox和ContentControl的组合来模仿TabControl的行为.(意味着我必须将ListBox设置为看起来像TabControl)

  2. TabControl不会覆盖PrepareContainerForItemOverride,解决方案是创建一个转换器.(不太好,因为我需要在转换器中指定convertee的类型)

谁知道更好的解决方案?

XAML

<sdk:TabControl ItemsSource="{Binding Items, ElementName=MyControl}">
        <sdk:TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" />
            </DataTemplate>
        </sdk:TabControl.ItemTemplate>
    </sdk:TabControl>
Run Code Online (Sandbox Code Playgroud)

C#

public ObservableCollection<Model> Items { get; set; }

public ViewModel()

    Items = new ObservableCollection<Model>{
        new Model { Name = "1"},
        new Model { Name = "2"},
        new Model { Name = "3"},
        new Model { Name = "4"}
    };
}
Run Code Online (Sandbox Code Playgroud)

推荐转换器:

public class TabConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        List<TabSource> source …
Run Code Online (Sandbox Code Playgroud)

collections silverlight binding tabcontrol datatemplate

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

是否建议使用一个返回与setter设置的值不同的getter?

我认为这对我的目的来说是实用的,但也有点令人困惑,因为人们可能希望获得与输入相同的输出.

@property
def value(self):
    return next(
    (option.key for option in self._options
     if option.id == self._value),
    None)

@value.setter
def value(self, value):
    idoption = None
    if isinstance(value, Option):
        idoption = next(
            (option.id for option in self._options
             if option.id == value.id), None)
    elif isinstance(value, int):
        idoption = next(
            itertools.chain(
                (option.id for option in self._options
                 if option.key == value),
                (option.id for option in self._options
                 if option.id == value)
            ), None)
    elif isinstance(value, str):
        idoption = next(
            (option.id for option in self._options
             if option.key == …
Run Code Online (Sandbox Code Playgroud)

python return-value getter-setter

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