我正在尝试更新ID值.因此,如果ID为1,则新值为2,则应使用新值替换旧ID.
后端:
public static void UpdateLocation( int locationID, SqlConnection connection, SqlTransaction transaction )
{
StringBuilder sqlString = new StringBuilder();
SqlCommand command;
sqlString.Append( "UPDATE [Location] SET " );
sqlString.Append( "description = @description " );
sqlString.Append( "WHERE locationID = @locationID " );
command = new SqlCommand( sqlString.ToString(), connection );
if( ( transaction != null ) ) command.Transaction = transaction;
command.Parameters.Add( "@locationID", SqlDbType.Int ).Value = locationID;
command.Parameters.Add( "@description", SqlDbType.VarChar ).Value = description;
int rowsAffected = command.ExecuteNonQuery();
if( !( rowsAffected == 1 ) ) …Run Code Online (Sandbox Code Playgroud) 我是MVVM模式的WPF编程新手.现在我在datagrid中添加了上下文菜单.但是,当我单击鼠标右键时,我不知道如何获取选择的行值.这是我的xmal
<DataGrid AutoGenerateColumns="False" Grid.Row="1" CanUserAddRows="False" CanUserDeleteRows="False"
ItemsSource="{Binding StoryList}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}" Width="40" IsReadOnly="True" />
<DataGridTextColumn Header="Title" Binding="{Binding Title}" Width="60" IsReadOnly="True"/>
<DataGridTextColumn Header="StoryPoints" Binding="{Binding StoryPoints}" Width="90" IsReadOnly="True">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding StoryPoints}" Value="0">
<Setter Property="Background" Value="Red"/>
<Setter Property="ToolTip" Value="Story Point cannot be 0."/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Stack Rank" Binding="{Binding StackRank}" Width="80"/>
<DataGridTextColumn Header="Estimate" Binding="{Binding Estimate}" Width="60"/>
<DataGridTextColumn Header="CompletedWork" Binding="{Binding CompletedWork}" Width="120" />
<DataGridTextColumn Header="RemainWork" Binding="{Binding RemainWork}" Width="110" />
<DataGridTextColumn Header="CompleteProcess" Binding="{Binding CompletedProcess}" Width="110" /> …Run Code Online (Sandbox Code Playgroud) 首先,我想强调一下,我确实知道如何在我的XAML文件中正确定义XML命名空间.这个重复的错误不是由我的代码中的错误引起的.问题并不能阻止我的项目成功构建,或者运行并且提到的Converter类完美地工作.
当我构建项目时,错误消失了.但是,设计人员会显示熟悉的错误消息:

当我点击"重新加载设计器"链接时,错误将返回.这个问题最糟糕的部分是我在这些视图上丢失了所有Intellisense.
错误突出显示了这些命名空间:

但是您可以清楚地看到它们已被正确声明:

我确信之前已经找到了解决这个问题的方法,但是在刚刚进行了广泛的搜索之后,我只能找到与此错误相关的一百万个帖子,其中用户实际上已经犯了错误.另请注意,这是一个全新的WPF应用程序,不能从互联网或网络驱动器下载.
我正在创建一个简单的用户控件,将弹出窗口与文本视图相结合,没什么了不起的.当我首先在窗口中设置它以将其全部设置出来时,它完美地工作,但当我将其移动到用户控件中以实际完成它时,它将无法正常工作.
我将最小值和最大值传递给控件,然后它会自动创建一个从该范围中选择的数字列表.在用户控件中,数字列表没有正确绑定,谁知道原因.也许有人可以看看我的代码.
我已经阅读了很多关于此问题的其他问题,但我们并不知道发生了什么.我的输出窗口没有出现任何错误,所以没有线索.无论如何,这是代码 -
UserControl.xaml
<UserControl x:Class="UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Me"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<StackPanel>
<TextBox Name="myTextbox"
Height="30"
Margin="0"
FontSize="14"
IsReadOnly="True"
Padding="5,2"
Text="{Binding Value}" />
<Popup x:Name="myPopup"
PlacementTarget="{Binding ElementName=myTextbox}"
StaysOpen="True">
<Popup.Style>
<Style TargetType="{x:Type Popup}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=myTextbox, Path=IsFocused}" Value="True">
<Setter Property="IsOpen" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Popup.Style>
<StackPanel>
<ListView Name="myListView"
Height="100"
MaxHeight="300"
ItemsSource="{Binding List,
UpdateSourceTrigger=PropertyChanged}"
SelectionChanged="ListView_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<Label Width="100"
Height="30"
Margin="0"
Content="{Binding}"
FontFamily="Segoe UI"
FontSize="14"
Padding="5,2" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Width="200" Height="30" />
</StackPanel>
</Popup>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
UserControl.xaml.vb
Imports …Run Code Online (Sandbox Code Playgroud) 我有一个UserControl(MainView),其上有一个视图框,用于显示另一个UserControl(MidView),在UserControl中,我有一个显示另一个UserControl(BottomView)的画布.在孙子UserControl(BottomView)上我有一个ListBox,我希望能够右键单击并调用特定方法.
我有
cal:Message.Attach="[Event MouseRightButtonDown] = [Action Method1]"
Run Code Online (Sandbox Code Playgroud)
在ListBox上,但每当我右键单击该框时,它会检查祖父母ViewModel(MainViewModel)的"Method1".我想我必须使用cal:Action.TargetWithoutContext让它在BottomViewModel中查看,但我无法弄清楚如何使用它.
我想
cal:Action.TargetWithoutContext="{Binding MainView}"
Run Code Online (Sandbox Code Playgroud)
要么
cal:Action.TargetWithoutContext="{Binding MainViewModel}"
Run Code Online (Sandbox Code Playgroud)
会解决我的问题,但没有运气.我出错的任何想法?
当我们从Visual Studio创建一个新的 WPF C#项目时,我们得到4个基本文件 "App.xaml","App.cs","MainWindow.xaml","MainWindow.cs"
这里的App.xaml文件基本上用于存储application related Resources在一个文件中,以便存在于整个应用程序中.
但是在Visual Studio中创建 WPF Python项目时, 我们只获得了2个文件 "MainWindow.xaml" and "MainWindow.py"
I want to create 2 more file in my Python project "App.xaml"和"App.py"这样"App.xaml"我就可以轻松定义我所有与应用程序相关的资源样式和控件模板.
Plz帮助!!
我使用.NET反射遇到了一个奇怪的问题.如果您知道为什么会这样,请告诉我.
要求:
我需要在实现特定接口的特定命名空间中生成每个类的实例集合.
原始解决方案
List<IReport> allReportTypes = Assembly.GetExecutingAssembly().GetTypes().Where(
t => !t.IsAbstract && t.IsClass && t.IsAssignableFrom(typeof(IReport)) && t.Namespace
== @namespace).Select(t => Activator.CreateInstance(t) as IReport).ToList();
Run Code Online (Sandbox Code Playgroud)
这个原始的解决方案什么都没有,我的问题是为什 每个类都正确实现了IReport接口,并已在相关的命名空间中声明.通过删除以下呼叫证明了这一点IsAssignableFrom:
List<IReport> allReportTypes = Assembly.GetExecutingAssembly().GetTypes().Where(
t => !t.IsAbstract && t.IsClass && t.Namespace == @namespace).Select(t =>
Activator.CreateInstance(t) as IReport).ToList();
Run Code Online (Sandbox Code Playgroud)
这将返回我想要的类的实例,但不检查所需的接口.请注意,该Activator.CreateInstance方法的结果已成功转换为IReport接口,因此返回的类肯定会实现它.我继续解决这个问题,并设法在以下查询中找到满足我所有要求的解决方法.
工作方案
List<IReport> allReportTypes = Assembly.GetExecutingAssembly().GetTypes().Where(
t => !t.IsAbstract && t.IsClass && ((TypeInfo)(t)).ImplementedInterfaces.Contains(
typeof(IReport)) && t.Namespace == @namespace).Select(t => Activator.CreateInstance(t)
as IReport).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,我想知道为什么这个IsAssignableFrom方法没有按照它所说的那样......或者在MSDN中.(我还尝试了另一个关于Stack Overflow相关问题的解决方案,但没有成功,所以请不要建议我遵循它们).
我有一个DataTemplate用来显示一个类的详细信息ListBox.在DataTemplate具有EventTrigger附接至该项目的Loaded一个使用事件DoubleAnimation的每个项目淡入视图,因为它们将被添加到ObservableCollection绑定到ListBox.它还有一个DataTrigger使用a DoubleAnimation和a ColorAnimation(RepeatBehavior="Forever")在特定条件下为发光效果设置动画.到现在为止还挺好.
该应用程序要求每隔几秒更新一次项属性.ListBox在调用时更新项目的属性后出现问题ListBox.Items.Refresh().这将重置动画,以便每个项目淡入视图,并且每隔几秒钟重新开始发光效果.如果我不调用,则item属性值不会更新Refresh.我的问题是,有没有办法单独刷新每个项目或以某种方式解决这个问题?
这一次,我的问题就像听起来一样简单......你如何在WPF中包含文本TreeViewItem?
我有一个简单HierarchicalDataTemplate的只有一个TextBlock.
<TextBlock Text="{Binding Value}" TextWrapping="Wrap" />
Run Code Online (Sandbox Code Playgroud)
文字没有包装.
我想结合Width的TextBlock到ActualWidth的TreeView,不过虽然这使得文字的环绕中,Width的TreeViewItem不适合的TreeView,因为TreeView有Padding.绑定到ActualWidth的TreeViewItem有(意料之中)相同的效果.另一个缺点是,即使是文字很少的项目也会超出TreeView界限.
<TextBlock Text="{Binding Value}" TextWrapping="Wrap" Width="{Binding ActualWidth,
ElementName=TreeView}" />
Run Code Online (Sandbox Code Playgroud)
当然,必须有一个更好的办法,像不知何故通知TreeViewItem的TreeView的界限......我不能相信它不会自动知道.但是我怎么能这样做呢?
更新>>>
由于HB的答案,我设法改变Grid.ColumnSpan为2对Bd Border,他在提到ControlTemplate它设置宽度,使文本现在包装精美.问题是我在ControlTemplate其他TreeViewItems中使用它TreeView,我不想要全宽度的项目.
我想出的解决方案很简单.我已将TreeViewItem.Tag值绑定到Grid.ColumnSpan属性中,ControlTemplate因此:
<Border Grid.ColumnSpan="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"
Name="Bd" …Run Code Online (Sandbox Code Playgroud) 我有WPF主机应用程序,AddIn也是WPF,它返回UI,如下所述:
[链接] http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.110%29.aspx
我想知道是否甚至可以激活WPF AddIn作为外部进程:看起来WPF加载项只被认为与AppDomain隔离一起使用,这对我们的应用程序来说还不够好.如果AddIn由于任何原因崩溃,我们不能让主机一直崩溃.即使加载了AddIn崩溃,我们也希望我们的主机应用程序能够运行.
我知道我们可以System.AddIn通过以下方式实现这一目标:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(new AddInProcess(), AddInSecurityLevel.fulltrust);
Run Code Online (Sandbox Code Playgroud)
但我有WPF AddIns不是System.AddIn因为我们的AddIns有WPF UI组件.
我可以在新的应用程序域中激活WPFAddIn,如下所示:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
Run Code Online (Sandbox Code Playgroud)
我无法获得有关使用WPF AddIns处理此情况的任何最新信息.是否有任何可能的示例如何在单独的进程中激活WPF AddIn或在主机中捕获未处理的异常.基本上我不能允许主机在addIn崩溃时死掉.我确实按照以下链接,但结果是线程很老,没有最新信息.
如果我可以在主机中处理异常也会很好.让我解释一下我的问题:
我有WPF主机"A".有WPF AddIn"B".
我在主机"A"中加载了AddIn"B".AddIn"B"有一个单击按钮.当用户单击按钮时,将在AddIn"B"中触发事件.在那种情况下,没有尝试捕获可用,并且从该事件抛出一些null异常.这个未处理的异常导致我的主机(WPF应用程序)崩溃.
我正在寻找一个解决方案,我可以在主机"A"中处理此异常,卸载AddIn"B"并继续Host而不会发生任何崩溃.
我曾尝试与加载宏AddInSecurityLevel.FullTrust,以及 AddInSecurityLevel.Internet.
任何提示或示例都会有所帮助.
wpf ×8
c# ×6
xaml ×2
.net ×1
data-binding ×1
datagrid ×1
interface ×1
ironpython ×1
listbox ×1
listboxitem ×1
maf ×1
mvvm ×1
reflection ×1
refresh ×1
sql ×1
system.addin ×1
treeviewitem ×1
vb.net ×1
word-wrap ×1
wpf-controls ×1