Button.IsEnabled 不能正常工作.
我调试了代码,属性的setter被"true"值命中.但该按钮仍然被禁用.
View.xaml:
<StackPanel Grid.Row="2" Margin="0,20,0,0" >
<Button Name="ButtonOk" Content="OK" Margin="0,0,4,0" IsEnabled="{Binding SomethingIsValid}" Command="{Binding CommandOk}" />
<Button Name="ButtonCancel" Content="Cancel" Margin="0,0,4,0" IsCancel="True" /
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
View.xaml.cs:
...
public View(ViewModel viewModel)
{
this.InitializeComponent();
this.viewModel = viewModel;
this.DataContext = viewModel;
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
public bool SomethingIsValid
{
get
{
return somethingIsValid;
}
set
{
this.somethingIsValid= value;
this.RaisePropertyChanged(() => this.SomethingIsValid);
}
}
#region IDataErrorInfo
public string this[string columnName]
{
get
{
this.SomethingIsValid= false;
if ("SomeName" == columnName)
{
if (string.IsNullOrEmpty(this.Status))
{
return "Please bla bla.."; …Run Code Online (Sandbox Code Playgroud) 假设我有一个字符串:
string str = "09012013 Receipt 09012013 #12"
Run Code Online (Sandbox Code Playgroud)
我想做substring返回"Receipt 09012013#12",我用substring:
var result = str.Substring(9);
Run Code Online (Sandbox Code Playgroud)
结果只是"收据09012013"
我尝试了其他特殊字符(%,§,$ ...),它工作,substring返回"收据09012013%12",但使用#和&,子字符串只返回"收据09012013".
有什么想法吗?谢谢.
编辑
我的代码:
new NaviListItem("renameBtn", "showwaitingscreen", "akte/renameakte?entityid=" + Request["parentid"] + "&aktenkurzbezeichnung=" + Model.Node.Header.Substring(Model.Node.Ordnungsnummer.Length+1), "umbenennen.png", Model.RenameVisible, "Umbenennen", "Umbenennen"),
Run Code Online (Sandbox Code Playgroud) 我正在尝试根据组合框的选定值显示标签.我正在使用VS2010.
这是代码:
private void pointsSettings_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.pointsSettings.SelectedValue.ToString() == "between")
{
pointsAboveLabel.Visibility = Visibility.Collapsed;
}
else
{
pointsAboveLabel.Visibility = Visibility.Visible;
}
}
Run Code Online (Sandbox Code Playgroud)
和XAML:
<ComboBox Name="pointsSettings" SelectionChanged="pointsSettings_SelectionChanged">
<ComboBoxItem Content="between" />
<ComboBoxItem Content="above" IsSelected="True" />
<ComboBoxItem Content="below" />
</ComboBox>
<Label Content="points" Name="pointsAboveLabel" />
<Label Content="and" Name="pointsBetweenLabel" Visibility="Collapsed" />
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
文本读取:"对象引用未设置为对象的实例".
我知道还有另一个非常相似的问题 - 事实上同样的错误 - 但是提供的解决方案(将变量初始化移动到InitializeComponent()方法调用之上)并不适合我,因为我没有对象初始化.
任何和所有的帮助都得到了最热烈的赞赏.
编辑:没有结果DB1.dbo.TABLE_B有STRING_ID ='id009'或'id008'; STRING_ID是varchar(100)和不是唯一的.
EDIT2:两个查询的执行计划相同.
我在SQL Server 2008服务器上运行以下查询:
DECLARE @stringid nvarchar(10)
SET @stringid='id009'
SELECT * FROM DB1.dbo.TABLE_A
INNER JOIN DB1.dbo.TABLE_B
ON DB1.dbo.TABLE_A.ID=DB1.dbo.TABLE_B.ID
WHERE DB1.dbo.TABLE_B.STRING_ID=@stringid
ORDER BY DB1.dbo.TABLE_B.UID desc, DB1.dbo.TABLE_A.TIME desc
Run Code Online (Sandbox Code Playgroud)
此查询将花费10秒钟来获取结果(为空).
如果我更改此查询的第二行以使用任何其他值,例如
SET @stringid='id008'
Run Code Online (Sandbox Code Playgroud)
查询将立即获得结果(空结果).
更重要的是:如果我将查询更改为不使用变量,而只是传递值('id009'),如下所示:
SELECT * FROM DB1.dbo.TABLE_A
INNER JOIN DB1.dbo.TABLE_B
ON DB1.dbo.TABLE_A.ID=DB1.dbo.TABLE_B.ID
WHERE DB1.dbo.TABLE_B.STRING_ID='id009'
ORDER BY DB1.dbo.TABLE_B.UID desc, DB1.dbo.TABLE_A.TIME desc
Run Code Online (Sandbox Code Playgroud)
查询也会立即得到结果(空结果).
所以我的问题是为什么这个查询运行得如此之慢,变量设置为某个值?
c# ×3
wpf ×2
xaml ×2
asp.net ×1
label ×1
performance ×1
razor ×1
sql ×1
sql-server ×1
string ×1
substring ×1
visibility ×1