我有以下代码剪切:
...
var tpc = new ThirtPartyClass();
tpc.ExecuteCommand();
tpc.ExecuteCommand();
...
Run Code Online (Sandbox Code Playgroud)
ExecuteCommand()方法返回带有一些信息的int值.对于调试,我想知道这个返回值.但我不想将结果赋给变量(var result = tpc.ExecuteCommand()).
VisualStudio 2010中是否有可能在调试期间检查此返回值而不将其分配给临时变量?
提前感谢您的建议
编辑:最后,此功能已添加到VS2013
我有一个带有ViewModel类的UserControl作为DataContext:
XAML
<UserControl x:Class="DotfuscatorTest.UserControl.View.UserControlView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" >
<StackPanel>
<TextBox Text="{Binding ViewModelProperty}"/>
</StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
namespace DotfuscatorTest.UserControl.View
{
using ViewModel;
public partial class UserControlView
{
public UserControlView()
{
InitializeComponent();
DataContext = new UserControlViewModel();
}
}
}
Run Code Online (Sandbox Code Playgroud)
ViewModel类:
namespace DotfuscatorTest.UserControl.ViewModel
{
public class UserControlViewModel
{
private string viewModelProperty = "hello world";
internal string ViewModelProperty
{
get { return viewModelProperty; }
set { viewModelProperty = value; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将ViewModelProperty设置为public,则绑定工作正常.但是,如果我将属性设置为内部,如上所述绑定失败(绑定错误:找不到属性...).
我认为内部属性可以在同一个程序集中像public一样访问.此外,我可以从UserControl-codebehind访问该属性没有任何问题:
{
...
((UserControlViewModel)DataContext).ViewModelProperty = "hallo viewmodel";
...
Run Code Online (Sandbox Code Playgroud)
对此行为的任何表述? …
我经常会收到一些关于"使用'new'表达式创建的未分配对象"的resharper警告.以下代码剪断将演示以下情况:
我正在使用一个帮助器类(Observer.cs)来监视来自另一个类(MonitoredClass.cs)的一些属性.当属性更改时,观察者类将更改的值写入另一个数据类(DataClass.cs).
剪切的简化代码:
MonitoredClass.cs:
public class MonitoredClass : INotifyPropertyChanged
{
// simplified: in fact property calls OnPropertyChange(..)
public string Property1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DataClass.cs:
public class DataClass
{
public string LastProperty1Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Observer.cs:
public class Observer
{
private MonitoredClass _monitoredClass;
private DataClass _dataClass;
public Observer(MonitoredClass monitoredClass, DataClass dataClass)
{
_monitoredClass = monitoredClass;
_dataClass = dataClass;
_monitoredClass.PropertyChanged+=MonitoredClassPropertyChanged;
}
private void MonitoredClassPropertyChanged(..)
{
_dataClass.LastProperty1Value = _monitoredClass.Property1;
}
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
如果我现在使用上面的Observer类,如下所示: …
我的代码我正在使用System.Function方法Debug.Assert(..)验证方法开头的输入参数(请参阅下面的示例代码剪切):
public class TestClass : IInterface
{
}
public class Verifier
{
public static void Verify(IInterface objectToVerify)
{
Debug.Assert((objectToVerify is TestClass), "Passed object must be type of TestClass");
// ReSharper (Version 7.1.1) marks here "Expression is always false
if (!(objectToVerify is TestClass))
{
return;
}
// do something ...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该Debug.Assert声明,ReSharper警告就会消失.在我看来,ReSharper必须忽略这个Debug.Assert陈述,因为如果Debug.Assert语句没有完成,则执行下面的代码(例如,在发布模式下)
你有什么意见?或者是否有其他实施方案?
我遇到了wix和托管自定义操作的问题:在我的自定义操作中,我创建了一个文件并将其保存在INSTALLLOCATION路径中.它似乎工作,没有抛出异常.但是在安装之后,刚刚创建的文件在INSTALLLOCATION中不存在.
维克斯 - 文件:
<CustomAction Id="SetInstallPath" Property="CreateTimeStamp" Value="[INSTALLLOCATION]"
Execute="immediate"/>
<CustomAction Id="CreateTimeStamp" BinaryKey="SetupActions.dll"
DllEntry="CreateTimeStampFile" Execute="deferred" Return="check"/>
<InstallExecuteSequence>
<Custom Action="SetInstallPath" Before="InstallFinalize"/>
<Custom Action="CreateTimeStamp" Before="InstallFinalize"/>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
定制操作-了Methode:
...
var keys = new string[session.CustomActionData.Keys.Count];
session.CustomActionData.Keys.CopyTo(keys, 0);
var cad = keys[0];
var filepath = cad + "myfile.xml";
File.Create(filepath);
...
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
编辑:在Scott Boettger的帖子后编辑了wix文件内容.
我有一个带有ItemsControl的WPF-View,它从ViewModel绑定ObservableCollection.现在我想逐渐淡出我从ObservableCollection中删除的项目.
视图模型:
public class ViewModel
{
public ObservableCollection<string> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
<Window x:Class="Sandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"
Name="mainWindow">
<Window.Resources>
<DataTemplate x:Key="mytemplate">
<DataTemplate.Resources>
<Storyboard x:Key="OnUnloaded">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-10"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</DataTemplate.Resources>
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<TextBox Text="{Binding Mode=OneWay}"/>
</Grid>
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Unloaded">
<BeginStoryboard Storyboard="{StaticResource OnUnloaded}"/>
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ItemsControl Grid.Row="1" ItemsSource="{Binding …Run Code Online (Sandbox Code Playgroud) 我正在创建一个带无边框窗口的WPF应用程序.应用MVVVM模式(在Caliburn.Micro的帮助下)我没有代码隐藏文件但只有一个XAML文件.
在几个帖子中我发现了以下解决方案
XAML:
<Window
...
WindowStyle="None" MouseLeftButtonDown="WindowMouseLeftButtonDown"/>
Run Code Online (Sandbox Code Playgroud)
代码背后:
private void WindowMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragMove();
}
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找一种解决方案,在XAML中完全定义它.
任何的想法?
在我的WPF应用程序中,我试图将控件“ ProgressBar”的“ Maximum”属性与ViewModel的属性绑定(借助Caliburn.micro)。
查看(xaml):
<ProgressBar x:Name="CurrentProgress"/>
Run Code Online (Sandbox Code Playgroud)
ViewModel:
private int currentProgress;
public int CurrentProgress
{
get { return currentProgress; }
set
{
if (currentProgress == value)
{
return;
}
currentProgress = value;
NotifyOfPropertyChange(() => CurrentProgress);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:Caliburn.micro是否有办法绑定最大值。我试图创建一个像这样的属性:
private int maximumProgress;
public int MaximumProgress
{
get { return maximumProgress; }
set
{
if (maximumProgress == value)
{
return;
}
maximumProgress = value;
NotifyOfPropertyChange(() => MaximumProgress);
}
}
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我也在Caliburn文档中进行搜索,但是在那里找不到任何帮助。
谢谢你的帮助
c# ×7
wpf ×4
debugging ×2
resharper ×2
xaml ×2
assert ×1
data-binding ×1
datatemplate ×1
eventtrigger ×1
internal ×1
mvvm ×1
progress-bar ×1
wix ×1