有了System.Threading.Tasks.Task<TResult>,我必须管理可能抛出的异常.我正在寻找最好的方法.到目前为止,我已经创建了一个基类来管理调用中的所有未捕获的异常.ContinueWith(...)
我想知道是否有更好的方法可以做到这一点.或者即使这是一个很好的方法.
public class BaseClass
{
protected void ExecuteIfTaskIsNotFaulted<T>(Task<T> e, Action action)
{
if (!e.IsFaulted) { action(); }
else
{
Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
{
/* I display a window explaining the error in the GUI
* and I log the error.
*/
this.Handle.Error(e.Exception);
}));
}
}
}
public class ChildClass : BaseClass
{
public void DoItInAThread()
{
var context = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew<StateObject>(() => this.Action())
.ContinueWith(e => this.ContinuedAction(e), context);
}
private void ContinuedAction(Task<StateObject> e)
{
this.ExecuteIfTaskIsNotFaulted(e, () => …Run Code Online (Sandbox Code Playgroud) 我遇到了WPF绑定到静态属性的一些问题.在我的应用程序中有一个名为Globals的类,它包含ThisAddIn的静态属性.这个对象允许我访问一个User属性,它基本上是我想在我的Binding中使用的.所以,我的XAML看起来像这样:
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
Run Code Online (Sandbox Code Playgroud)
命名空间s由以下行在顶部声明:
xmlns:s="clr-namespace:ConsoleApplication16.Model"
Run Code Online (Sandbox Code Playgroud)
我发现了很多不同的方法,如何在XAML中引用静态属性,但除了这个之外没有一个工作,这对我来说似乎也是最合乎逻辑的.我发现的一些样本根本没有使用Path或Member.
经过一些测试后我找到了正确的方法,使用"x:Static Member"来定义你想要使用的类和静态属性,而Path在这个对象里面定义了正确的属性,就像普通绑定一样.
尽管此解决方案在没有任何抱怨的情况下进行编译,但会弹出XAMLParseException,直接告诉我StaticExtension值无法解析为枚举,静态字段或静态属性.
我有一个使用MVVM模式的WPF应用程序.将按钮连接到VM非常简单,因为它们实现了ICommand.我有一个类似的上下文菜单.下一步是为上下文菜单创建快捷键.我无法弄清楚如何让快捷键调用Command.这是一个例子:
<MenuItem Header="Update" Command="{Binding btnUpdate}" >
<MenuItem.Icon>
<Image Source="/Images/Update.png"
Width="16"
Height="16" />
</MenuItem.Icon>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
现在我添加了这个:
<Window.InputBindings>
<KeyBinding Key="U"
Modifiers="Control"
Command="{Binding btnUpdate}" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
尝试将快捷键连接到同一个绑定,但这不起作用.错误是:
错误169无法在"KeyBinding"类型的"Command"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.
有没有办法将此事件连接到命令?我无法弄清楚这一点.
提前致谢!
法案
我知道它是邪恶的,但我已经看到一个好程序员编写的代码中的吞没异常.所以我想知道这种不良做法是否至少有一个积极的意义.
换句话说,这很糟糕,但为什么优秀的程序员在极少数情况下会使用它呢?
try
{
//Some code
}
catch(Exception){}
Run Code Online (Sandbox Code Playgroud) 我有一个TextBlock内容是绑定到ViewModel的字符串属性的数据.这TextBlock有一个ScrollViewer缠绕它.
我想要做的是每次日志更改时,ScrollViewer将滚动到底部.理想情况下我想要这样的东西:
<ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollPosition="{Binding Path=ScrollPosition}">
<TextBlock Text="{Binding Path=Logs}"/>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
我不希望后面使用代码!我在寻找应该使用该解决方案唯一的结合和/或XAML中.
也许这是一个愚蠢的问题,但我找不到答案:在下面的xaml中CommandParameter绑定到什么?或者一般来说,"{Binding}"意味着什么?
<Button Command="{Binding DataContext.DeleteCommand, ElementName=List}"
CommandParameter="{Binding}"/>
Run Code Online (Sandbox Code Playgroud) 我有问题,我不知道如何解决这个简单,我有很多这样的点,那么解决方案应该不复杂.
我有主要项目设置和主要XAML.
我有Binding Converter和XAML文件的依赖项目看起来像:
<TextBlock Text="{Binding X.Y.Z,
Converter={StaticResource ProbabilityConverter},
ConverterParameter=??????????????, Mode=OneWay}"
/>
Run Code Online (Sandbox Code Playgroud)
此XAML文件由主项目的主XAML文件加载.
我必须将一个属性的值从Setting's传递给ConverterParameter,此参数可以在运行时更改,那么这必须是Binding,Binding我只能DependencyProperty在这种情况下做.
我必须DependencyProperty为此Setting属性做包装才能解决这个问题?
当我尝试设置时Binding,ConverterParameter我将在运行时获得此异常:
无法在"绑定"类型的"ConverterParameter"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.
我是structureMap的新手.如何使用流畅的配置为以下类定义构造函数参数?谢谢
public BlobContainer(CloudStorageAccount account
, string containerName
, string contentType
, BlobContainerPermissions blobContainerPermissions)
{
}
Run Code Online (Sandbox Code Playgroud) 我有以下情况
if (_ldapAuthentication.IsAuthenticated (Domain, login.username, login.PassWord))
{
_ldapAuthentication.LogOn (indexViewModel.UserName, false);
_authenticationService.LimpaTentativas (login.username);
return RedirectToAction ("Index", "Main");
}
Run Code Online (Sandbox Code Playgroud)
如果是真的,它会重定向到另一个页面..最好做一个测试?
我有以下LINQ查询,它使用NHibernate对SQL Server支持的存储库...
var casesByCaseOwner = this.preGrantDetailRepository.All
.Where(x => x.CaseFileLocation.Id == cflId)
.GroupBy(x => x.CaseOwner)
.Select(x => new StagSummaryForCfItem
{
Id = x.Key.Id,
Description = x.Key.Name,
NumberOfCases = x.Count(),
UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee),
UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement)
}).AsEnumerable();
Run Code Online (Sandbox Code Playgroud)
但是,它抱怨SQL Server无法按CaseOwner.Name列分组,因为它不包含在选择列表或组子句中.来自数据库世界我理解错误,但是,我不知道如何强制NHibernate按两者分组Id,Name但仍然CaseOwner可以在我的Select中使用该实体.
c# ×3
data-binding ×3
wpf ×3
xaml ×2
.net ×1
asp.net-mvc ×1
binding ×1
linq ×1
mvvm ×1
nhibernate ×1
shortcuts ×1
static ×1
structuremap ×1