如何从具有Bindings和Observable集合的数据库表中将菜单项添加到WPF中的菜单控件(而不是上下文菜单)?我有这个菜单:
<Menu HorizontalAlignment="Left" Height="27" VerticalAlignment="Top" Width="649">
<MenuItem Header="_File">
<MenuItem Header="_Exit" Command="{Binding ExitCommand}"/>
</MenuItem>
<MenuItem Header="_MyMenu">
<MenuItem Header="_SubMenu1" Command="{Binding SubMenu1Command}" />
<MenuItem Header="_SubMenu2" Command="{Binding SubMenu2Command}" />
</MenuItem>
</Menu>
Run Code Online (Sandbox Code Playgroud)
"SubMenu1"和"_SuMenu2"是数据库表中的值:
codSubMenu | SubMenuColum | CommandColumn
1_ _ __ _ __ _ __ | SubMenu1 _ __ _ _ | SubMenu1Command 2 _ __ _ __ _ ___ | SubMenu2 _ ____ | _SubMenu2Command
我需要这样的东西:
<Menu HorizontalAlignment="Left" Height="27" VerticalAlignment="Top" Width="649"
ItemsSource="{Binding ObservableCollectionMenu}">
<MenuItem Header="_File">
<MenuItem Header="_Exit" Command="{Binding ExitCommand}"/>
</MenuItem>
<MenuItem Header="_MyMenu">
<MenuItem Header="{Binding …Run Code Online (Sandbox Code Playgroud) 我有这个存储过程:
CREATE OR REPLACE PROCEDURE SP_ObtenerSecuencialFactura(INOUT p_secuencial INT)
LANGUAGE PLPGSQL
AS
$$
BEGIN
SELECT MAX("CODIGOFACTURA") + 1 INTO p_secuencial FROM "FACTURA";
IF p_secuencial IS NULL THEN
p_secuencial := 1;
END IF;
END
$$
Run Code Online (Sandbox Code Playgroud)
和电话:
DECLARE secuencial INT;
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%', secuencial;
Run Code Online (Sandbox Code Playgroud)
但是当我调用该存储过程时出现此错误:
错误:“INT”处或附近的语法错误
第 1 行:DECLARE secuencial INT;
怎么了?我正在寻找示例,但仅存在于函数中。
我有一个WPF Hyperlink,我正试图从中获取文本内容.
例如:
<Hyperlink Command="{Binding CustomersCommand}" Name="HLCustomers">
Customers
</Hyperlink>
Run Code Online (Sandbox Code Playgroud)
使用通常的方式访问Text属性或使用VisualTreeHelper获取某些子文本元素Hyperlink是不可能的,因为它不是可视元素.我试图从中获取文本,FirstInline但这也没有给我文本.
如何Hyperlink在运行时从上面示例中的元素获取值"Customers" ?
我有一个带有按钮的用户控件,可以从带有以下内容的窗口中使用RoutedEventHandler:
用户控制:
public event RoutedEventHandler IniciarPLC_Click;
private void BtnIniciarPLC_Click(object sender, RoutedEventArgs e)
{
.....
if (IniciarPLC_Click != null)
{
IniciarPLC_Click(this, new RoutedEventArgs());
}
......
}
Run Code Online (Sandbox Code Playgroud)
窗户:
XAML:
<ucUserControl x:Name="cntBarraHerramientas" IniciarPLC_Click="CntBarraHerramientas_IniciarPLC_Click"/>
Run Code Online (Sandbox Code Playgroud)
C#:
private void CntBarraHerramientas_IniciarPLC_Click(object sender, RoutedEventArgs e)
{
....
}
Run Code Online (Sandbox Code Playgroud)
但我需要调用async中的方法CntBarraHerramientas_IniciarPLC_Click,因此我更改了void返回类型并async Task使用以下方法调用该方法await:
private async Task CntBarraHerramientas_IniciarPLC_Click(object sender, RoutedEventArgs e)
{
await AsyncMethod(...);
}
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
无法从文本“CntBarraHerramientas_IniciarPLC_Click”创建“IniciarPLC_Click”。' ArgumentException:您无法链接到目标方法,因为其安全透明度或签名与委托类型的安全透明度或签名不兼容。
问题是我如何调用async方法RoutedEventHandler?因为async从按钮单击事件调用的方法有效。