小编Ale*_*aum的帖子

如何在WPF DataGrid中实现可编辑的DataGridComboBoxColumn

我想让用户能够编辑WPF DataGrid中的一些数据(来自.net Framework 4.0)."仪器"列应允许用户从静态列表中选择可用的仪器或写入自由文本.我的DataGrid使用MVVM绑定到数据.我尝试了很多我在互联网上找到的解决方案,但没有一个能正常工作.这是我的代码:

<DataGrid Margin="0,6" ItemsSource="{Binding Path=Orders}" AutoGenerateColumns="False"  CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="True">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Instrument" MinWidth="140"                                      
 ItemsSource="{x:Static ViewModel.Instruments}" SelectedItemBinding="{Binding Path=SelectedInstrument}">
 <DataGridComboBoxColumn.EditingElementStyle>
   <Style TargetType="ComboBox">
     <Setter Property="IsEditable" Value="True"/>
   </Style>                  
 </DataGridComboBoxColumn.EditingElementStyle>                
</DataGridComboBoxColumn>   
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

下拉列表正确显示.可以使用任何文本编辑该字段,但在为自由文本关闭下拉列表后,它会为SelectedInstrument设置null.它仅适用于所选项目.我试图更改为SelectedValueBinding,但它没有帮助.

如何正确实施这一要求?有人可以在这里发布工作样本吗?

附加:订单是ObservableCollection Order具有类似字符串Title,DateTime Ordered,string SelectedInstrument,Instruments是一个字符串[]的属性

解决方案:以下建议作为bathineni工作的解决方法:

<DataGrid Margin="0,6" ItemsSource="{Binding Path=Orders}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="True">
 <DataGrid.Columns>
  <DataGridTemplateColumn Header="Instrument" MinWidth="140">
   <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
     <TextBlock Text="{Binding Path=SelectedInstrument, Mode=OneWay}"/>
    </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
   <DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
     <ComboBox IsEditable="True" Text="{Binding Path=SelectedInstrument}" 
      ItemsSource="{x:Static ViewModel.Instruments}"/>                   
    </DataTemplate>
   </DataGridTemplateColumn.CellEditingTemplate>
  </DataGridTemplateColumn>   
 </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

wpf binding datagrid datagridcomboboxcolumn

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

使用TextWrapping的WPF CheckBox样式

我需要TextWrapping在WPF中应用一个CheckBox.

请看这两个样本:

<CheckBox>  
  <TextBlock TextWrapping="Wrap"  
             Text="_This is a long piece of text attached to a checkbox."/>  
</CheckBox>

<CheckBox>  
  <AccessText TextWrapping="Wrap"  
              Text="_This is a long piece of text attached to a checkbox."/>  
</CheckBox>
Run Code Online (Sandbox Code Playgroud)

如果我使用一个TextBlockContentCheckBox,检查元素(垂直对齐的顶部)和文本显示正常,但不能加速.

替代文字

如果我使用一个AccessTextContentCheckBox,校验元件显示错误(垂直取向是中央).

如何更改Style元素以显示CheckBox正确的?

wpf checkbox styles alignment word-wrap

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

如何在Angular 2中获取路由名称的绝对URL?

在我的Angualar 2(最终)应用程序中,我经常需要通过路由名称(例如'/ products')创建完整(绝对)URL,例如,为特定页面提供永久链接或从另一个组件中打开页面标签/窗口.

是否有任何Angular 2 API,它允许通过路由名称获取绝对Url?如果不是,是一些已知的woraround,例如使用javascript?

我已尝试过location或PathLocationStrategy(例如prepareExternalUrl),但该方法返回'/ products'而不是例如http:// localhost/products

javascript angular2-routing angular

11
推荐指数
2
解决办法
7139
查看次数

在没有WebBrowser控件的Windows.Forms中托管Silverlight

是否可以在没有WebBrowser控件的情况下在Windows.Forms中托管Silverlight,以避免不必要的COM封送?

编辑:目标是在Windows 2000等旧平台上使用WPF或Silverlight等丰富的图形内容.

.net com silverlight webbrowser-control winforms

8
推荐指数
1
解决办法
7065
查看次数

如何自定义WPF功能区4.5(样式,模板等)

我尝试从.Net Framework 4.5自定义System.Windows.Controls.Ribbon,因此它可以与Expression Dark主题一起使用(深色,如Blend的默认主题).我尝试过以下想法,但直到现在还没有任何进展:

  • 更改功能区的背景:将仅更改主色,但保留所有其他光泽颜色,突出显示colos等.
  • 更改样式和模板:我找不到Ribbon 4.5的任何默认模板.我试图通过像ShowMeTheTemplate这样的工具来获取它们,但似乎它们使用了一些内部类.
  • 使用Blend for VS2012自定义模板:我总是收到错误"复制模板失败".
  • 使用RibbonControlLibrary中的.net 4功能区:RibbonWindow在Windows 8中看起来很丑(参见WPF RibbonWindow + Windows 8 - 控制框看起来很糟糕),我无法解决

任何帮助将不胜感激,欢迎所有建议.

c# wpf templates styles ribbon

8
推荐指数
2
解决办法
7398
查看次数

在代码隐藏中为类型设置默认样式

如何为代码隐藏中的类型设置默认样式,例如:

<ScaleTransform x:Key="scaler" ScaleX="1.25" ScaleY="1.25" />
<Style TargetType="{x:Type ToolTip}">
  <Setter Property="LayoutTransform" Value="{DynamicResource scaler}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

我需要在代码隐藏中而不是在xaml标记中设置工具提示的样式.

wpf styles code-behind

7
推荐指数
1
解决办法
4080
查看次数

在WPF绑定中撤消

如何在WPF中使用绑定提供撤消/重做?

例如,您使用绑定实现主 - 详细视图.编辑后,您的更改会使用绑定自动保存.然后,您要撤消更改.

在WPF绑定中是否有现成的东西?WPF是否提供了一些结构或接口?

这个问题不是关于如何使用堆栈实现撤销/重做.

.net wpf binding undo

6
推荐指数
1
解决办法
3832
查看次数

WPF Listview空文本

如何在WPF Listview中使用GridView显示一个空文本(如在ASP.net中),例如"请选择一个人"或"0个项目成立"?

.net c# wpf listview

6
推荐指数
1
解决办法
5936
查看次数

以编程方式卸载浏览器外的Silverlight应用程序

如何以编程方式卸载浏览器外的Silverlight 4应用程序,而不是使用contextmenu(例如,如果我想替换上下文菜单)?

编辑

我在"安装没有涉及浏览器的Silverlight应用程序"中找到了如何通过调用命令行来卸载:

"%ProgramFiles%\ Microsoft Silverlight\sllauncher.exe"/ uninstall /origin:silverlight.net/content/samples/apps/...

这可以用于: -

 dynamic cmd = AutomationFactory.CreateObject("WScript.Shell");
 cmd.Run(run, 1, true);
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案?

.net deployment silverlight uninstall out-of-browser

6
推荐指数
1
解决办法
5737
查看次数

为什么Silverlight无需任何编码API即可提供网络摄像头和麦克风支持?

在Silverlight 4的新功能列表中,您将找到以下内容:

网络摄像头和麦克风,允许共享视频和音频,例如聊天或客户服务应用程序.

Silverlight将音频流捕获为原始pcm.那么如何在客户端没有任何编码的情况下实现音频/视频聊天或客户端/服务器音频录制应用程序,而Silverlight中没有API?

在Silverlight中你不能使用非托管dll.您可以使用com自动化(Silverlight 4的一项新功能,我认为仅适用于Windows),但前提是它已经安装在客户端(您知道随Windows安装的任何编码COM服务器)吗?否则,您将如何在Silverlight应用程序中部署自定义COM服务器?

我找到的唯一方法是部署命令行编码并将其与COM AutomationFactory.CreateObject("WScript.Shell")一起使用,或实现编码以在您自己的AudioSink中使用它.

silverlight webcam encoding multimedia microphone

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