标签: binding

何时使用WPF依赖属性与INotifyPropertyChanged

人们对INotifyPropertyChanged.PropertyChanged在视图模型中触发的简单.NET属性何时足够有任何指导?那么你什么时候想要升级到一个完整的依赖属性?或者DP主要用于观看?

wpf binding dependency-properties inotifypropertychanged

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

TextBox和默认Button绑定确实更新太晚了

我有一个带有这两个控件的简单WPF对话框:

<TextBox Text="{Binding MyText}"/>
<Button Command="{Binding MyCommand}" IsDefault="True"/>
Run Code Online (Sandbox Code Playgroud)

现在,当我在TextBox中输入一些文本并使用鼠标单击按钮时,一切都按预期工作:TextBox将设置MyText并调用MyCommand.

但是,当我输入一些文本并按Enter键以"单击"默认按钮时,它不起作用.因为在点击进入焦点时不会离开TextBox,绑定将不会刷新MyText.因此,当调用MyCommand(其工作)时,MyText将包含旧数据.

我如何在MVVM中修复此问题?在经典的代码隐藏中,我可能只是在MyCommand处理程序中调用"MyButton.Focus()",但在MVVM中,MyCommand处理程序对该按钮一无所知.

那么现在呢?

wpf binding mvvm

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

理解WPF Binding CommandParameter ="{Binding}"

也许这是一个愚蠢的问题,但我找不到答案:在下面的xaml中CommandParameter绑定到什么?或者一般来说,"{Binding}"意味着什么?

<Button Command="{Binding DataContext.DeleteCommand, ElementName=List}" 
        CommandParameter="{Binding}"/>
Run Code Online (Sandbox Code Playgroud)

wpf binding

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

Ninject InRequestScope缺失

关于ninject的最新版本(2.2.1.4)有几个问题.

试图将Linq2sql绑定DataContext到具体实现InRequestScope(在类库项目中)

Bind<DataContext>().To<MoneywatchDataContext>()
Run Code Online (Sandbox Code Playgroud)

但找不到InRequestScope方法

在此输入图像描述

最后这样做,

Bind<DataContext>().To<MoneywatchDataContext>().InScope(ctx => HttpContext.Current)
Run Code Online (Sandbox Code Playgroud)

只是想知道是否:

  1. 如果它的行为与InRequestScopeMethod 完全相同.
  2. 它将保证当我HTTContext.Current的GC被用时,底层DataCotext也将被处理掉.

c# binding ninject ninject-2

34
推荐指数
3
解决办法
7521
查看次数

Python中的本地函数

在下面的Python代码中,我得到了一个UnboundLocalError.据我所知,局部函数共享包含函数的局部变量,但这似乎不是这里的情况.我认识到a在这种情况下这是一个不可变的值,但这应该不是问题.

def outer():
    a = 0
    def inner():
        a += 1
    inner()
outer()
Run Code Online (Sandbox Code Playgroud)

看起来内部函数已经收到了父函数中所有引用的副本,因为UnboundLocalError如果值的值a被包装在一个可变类型中,我就不会得到异常.

有人能够澄清这里的行为,并指出相应的Python文档吗?

python binding model function local

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

onServiceConnected从未在bindService方法之后调用

我有一个特殊情况:由广播接收器启动的服务启动一项活动.我希望此活动能够与服务进行通信.我选择使用AIDL来实现它.除了活动中的bindService()方法之外,一切似乎都很好onCreate().实际上,bindService()抛出一个空指针异常,因为在服务方法时onServiceConnected()从不调用onBind().无论如何bindService()返回true.该服务显然是活跃的,因为它启动了活动.我知道从服务中调用活动可能听起来很奇怪,但不幸的是,这是在服务中进行语音识别的唯一方法.

提前致谢

service binding android speech-recognition

33
推荐指数
6
解决办法
4万
查看次数

WPF Treeview数据绑定分层数据与混合类型

我对WPF Treeview Binding有一些复杂的情况.我花了最近两天的时间尝试谷歌,是我提出的关闭,但它没有解决问题.

情况如下:

我有一个看起来像这样的对象:

public class Category
{
  public string Name { get; set; }
  public List<Category> Categories { get; set; }
  public List<Product> Products { get; set; }
}

public class Product
{
  public string Name { get; set;
}
Run Code Online (Sandbox Code Playgroud)

每个类别都可以包含对象列表和子类别.我有理由这样做对我和我正在写的应用程序完全有意义.

实际的对象构造可能看起来像这样:

Category - Pharmacy
  |-Product - Aspirin
  |-Product - Tylenol
  |-Category - Tooth Paste
  |  |-Product - Crest
  |  |-Product - Colgate
  |-Category - Paper Products
   |-Category - Toilet Paper
   |  |-Product - NoName
   | …
Run Code Online (Sandbox Code Playgroud)

wpf treeview binding hierarchicaldatatemplate hierarchical-data

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

如果绑定为null,则隐藏工具提示

目前我有以下代码来显示工具提示.

<Border BorderBrush="Black"
        BorderThickness="{Binding Border}"
        Height="23"
        Background="{Binding Color}">
<ToolTipService.ToolTip>
    <TextBlock Text="{Binding TooltipInformation}" />
</ToolTipService.ToolTip>
Run Code Online (Sandbox Code Playgroud)

这在ItemsControl中显示,包含大约25个项目.其中只有少数的值设置为TooltipInformation

如果TooltipInforation是一个空字符串,它仍然显示包含文本块的工具提示框作为一个非常小的窗口(大约5px高和20px宽).即使我将文本块可见性设置为折叠.

如果TooltipInformation的值为null或空字符串,有没有办法完全删除工具提示?

c# silverlight xaml binding tooltip

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

WPF绑定:在绑定路径中进行转换

我有一个结合,其中的Path设置为Path=Item.Tag.caption,但我需要投ItemIEDGE第一,所以我可以访问Tag属性.有没有办法实现这个目标?

wpf binding

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

在.NET 4.0中,OneWayToSource绑定似乎已被破坏

OneWayToSource 在.NET 4.0中,绑定似乎已经破裂

我有这个简单的Xaml

<StackPanel>
    <TextBox Text="{Binding TextProperty, Mode=OneWayToSource}"/>
    <Button/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我的代码背后看起来像这样

public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;
}
private string m_textProperty;
public string TextProperty
{
    get
    {
        return "Should not be used in OneWayToSource Binding";
    }
    set
    {
        m_textProperty = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5中,这可以像你一样工作.将一些文本放入TextBox,按Tab键使其失去焦点,并TextProperty使用输入的任何文本进行更新TextBox

在.NET 4.0中,如果我在其中键入一些文本TextBox然后按Tab键使其失去焦点,则TextBox恢复为TextProperty(意味着"不应在OneWayToSource绑定中使用")的值.这是重读用于OneWayToSource.NET 4.0中的绑定吗?我只是想把TextBox它的价值推向TextProperty而不是相反.

更新
为此问题添加赏金,因为这已成为我项目中的市长不便,我想知道这已经改变的原因.似乎get在Binding更新源之后调用.这是OneWayToSource.NET 4.0中绑定所需的行为吗?

如是

  • 它在3.5中的工作方式有什么问题? …

c# wpf xaml binding

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