来自Java,我真的习惯于制作GUI组件的常用做法:我通常会做一些基类,它包含GUI组件的所有常用对象,然后我扩展它.
所以,基本上,这是我想用C#和XAML实现的.
为了使问题清楚,这是我正在做的一个例子(那是行不通的!):
我们有一个拥有自己的XAML的基类
<UserControl x:Class="BaseClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480">
<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
<Border BorderBrush="Aqua" BorderThickness="10" CornerRadius="10" x:Name="Border" HorizontalAlignment="Left" Height="480" VerticalAlignment="Top" Width="480"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
然后我们有一个扩展第一个类的类
<base:BaseClass x:Class="DerivedClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:base="clr-namespace:BaseClass"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="60" d:DesignWidth="200">
<Grid x:Name="LayoutRoot" Margin="0" Width="200" Height="60" MaxWidth="200" MaxHeight="60" Background="{StaticResource PhoneAccentBrush}">
<TextBlock x:Name="dummyText" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Dummy Plugin" VerticalAlignment="Top" Height="40" Width="180" Foreground="White" TextAlignment="Center"/>
</Grid>
</base:BaseClass>
Run Code Online (Sandbox Code Playgroud)
从2个XAML代码开始,我想要做的就是DerivedClass进入BaseClass容器.这将允许我在各种派生类之间共享组件,而不必在每次需要时编写代码.
例如,如果我希望我的所有组件都有这个圆形边框,我想把它放在bass类中,然后将它放在所有派生类中,而不必重写它. …
我正在尝试处理@ManagedProperty但没有成功!
我一直在关注这个指南,看起来并不难.但我的代码根本行不通!
这是一个小片段
@ManagedBean
@SessionScoped
public class LoginBean {
@EJB
private LoginUserLocal loginUser;
private boolean loggedIn = false;
private User user;
private StreamedContent image;
.
.
.
//--
@Named(value = "messagesBean")
@RequestScoped
public class MessagesBean {
@ManagedProperty(value = "#{loginBean}")
private LoginBean loginBean;
public LoginBean getLoginBean() {
return loginBean;
}
public void setLoginBean(LoginBean loginBean) {
this.loginBean = loginBean;
}
public String getUser() {
System.err.println(loginBean == null);
return loginBean.getUser().getUsername();
}
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个NullPointerException,说loginBean为null!
有什么建议吗?
这是我的第一个问题,我希望我做得对.
我需要处理一个Java EE项目,因此,在开始之前,我正在尝试做一些简单的事情,看看我能做到这一点.
我被Stateful Session Beans困住了.
这是一个问题:如何使用SFSB跟踪用户的会话?我看到的所有情况,"把"的最终SFSB到HttpSession的属性.但我不明白为什么!我的意思是,如果bean是STATEFUL,为什么我必须使用HttpSession来保存它?
EJB容器的任务不是将正确的SFSB返回给客户端吗?
我试过一个简单的计数器豆.在不使用会话的情况下,两个不同的浏览器具有相同的计数器bean(单击"增量"会更改它们的值).使用会话,我有两个不同的值,每个值对应每个浏览器(点击Firefox上的"增量",只添加一个到Firefox的bean).
但我的老师告诉SFSB保持"与客户的会话状态",那么为什么它不能在不使用HttpSession的情况下工作呢?
如果我理解正确的,不使用HttpSession中有SFSB同样用做它的SLSB呢?
我希望我的问题很明确,而且我的英语不是那么差!
编辑:我正在使用登录系统.一切顺利,完成登录后,我会看到一个显示用户数据的个人资料页面.但重新加载页面会使我的数据消失!我尝试在记录时添加HttpSession,但这样做会使数据在注销后保持不变!
我需要一种在声音仍在播放时启动/停止循环的方法.我发现一起播放多种声音的最佳方法是使用XNA.所以我SoundEffectInstance从SoundEffect包含音频剪辑的对象开始创建.现在问题是我有一个按钮,应该将此剪辑的状态从"循环"更改为"非循环",反之亦然.
这是问题:它抛出一个异常,说必须在第一次播放之前设置循环.所以我认为,在从"非循环"切换到"循环"时,我可以等待声音停止,然后重新创建SoundEngineInstance,设置IsLooped = true并再次启动.这个有效,但有一些延迟,这会让你失去你的时间,所以这是无用的.
我正在寻找的是一种在播放声音时设置或取消设置循环的方法,没有任何延迟.
编辑:
我尝试使用两个SoundEngineInstance,一个循环,一个不循环,只需使用音量切换它们.问题是非循环播放只是在第一次播放后停止,所以如果我将它循环两次然后我将其置于非循环状态,则不播放声音,因为非循环剪辑已经结束!
建议?
我被要求使用Composite,Recursive Descendent Parser和Interpreter创建表达式求值程序.
这是语法:
<cond> ? <termb> [OR <termb>]*
<termb>?<factb>[AND <factb>]*
<factb>?<expr> RELOP <expr> | NOT <factb> | OPAR <cond> CPAR
<expr> ? [PLUS | MINUS] <term> [(PLUS <term>) | (MINUS <term>)]*
<term> ? <termp> [(MULT <termp>) | (DIV <termp>) | (REM <termp>)]*
<termp> ? <fact> [POWER <fact>]*
<fact> ? ID | NUM | OPAR1 <expr> CPAR1
----TERMINALS----
ID ? ("A" | ... | "Z" | "a" | ...| "z") …Run Code Online (Sandbox Code Playgroud) 所以,我刚刚开始使用Windows应用程序,有一些我无法按照自己的意愿工作(可能是因为我找不到任何样本,而且Channel9视频没有覆盖我的情况).
从这篇文章开始,我决定"重新定位"技术是适合我的app从大屏幕移动到较小屏幕的技术.
我所做的是使用a StackPanel并使用两个AdaptiveTriggers 改变其方向(一个用于0宽度,另一个用于720,基于此处的表格).
这种方式有效,但我会用一些丑陋的油漆编辑截图来说明一些问题.
这就是当我处于这种BigScreen情况时会发生的情况,那里有足够的空间让A和B同时在同一行上.这里的问题是B应该占据剩余的全部宽度,覆盖所有蓝色部分.

第二个问题与调整大小有关.当没有足够的空间时,绿色部分会被切割而不是调整大小(您可以看到右侧边框消失).在使用StackPanel布局响应之前没有发生这种情况.

最后,当我们处于这种SmallScreen情况时,方向变为垂直方向,我们遇到与第一个相同的问题:绿色部分的高度不会填满屏幕.

这是XAML用于页面的:
<Page
x:Class="Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WifiAnalyzerFinal.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mvvm="using:Mvvm"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SmallScreen">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackPanel.Orientation"
Value="Vertical"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="BigScreen">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="720"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackPanel.Orientation"
Value="Horizontal"/>
<Setter Target="Rect.Width"
Value="200"/>
<Setter Target="Rect.Height"
Value="Auto"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel Orientation="Vertical"
Background="Blue"
x:Name="StackPanel">
<Rectangle Fill="Red"
Height="50" …Run Code Online (Sandbox Code Playgroud) 我需要使用Repast Simphony作为模拟器开发Java版本的Iterated Prisoner Dilemma.
这些想法是每个人Player都是一个代理人,我们有一个无法移动的n x n网格Player.每个人Player必须与4个邻居(北部,南部,西部和东部)进行比赛,根据每轮比赛的4个不同比赛的结果找到最佳策略.
由于没有内置系统在Repast Simphony中的代理之间交换消息,我必须实施某种解决方法来处理代理的同步(A vs B和B vs A应该算作同一轮,这就是他们需要的原因要同步).
这是通过将每一轮视为:
Player 我为4个敌人中的每一个选择了下一步行动Player 我向4个敌人中的每一个发送正确的动作Player 我等待4个敌人中的每一个回复根据我对Repast Simphony的理解,预定的方法是顺序的(没有代理级并行),这意味着我被迫以与发送方式不同的方式进行等待(以较低的pritority安排以确保完成所有发送)在开始等待之前).
这里的问题是,尽管收到了所有4条预期的消息(至少这是打印的内容),一旦等待方法启动它报告的接收元素少于4个.
这是从Player课程中获取的代码:
// myPoint is the location inside the grid (unique, agents can't move and only one per cell is allowed)
public int hashCode() {
final int prime = 31;
int result = …Run Code Online (Sandbox Code Playgroud) 与标题中一样,当代码执行BackgroundAgent时,当我在主应用程序中执行代码时,它不会被触发.
这是我的代码:
var background = new BitmapImage(new Uri(uri), UriKind.Absolute)){ CreateOptions = BitmapCreateOptions.None };
background.ImageFailed += (s, e) =>
{
Debug.WriteLine(e);
// Nothing happens here so I guess that there's no error in the image loading
};
background.ImageOpened += (s, e) =>
{
Debug.WriteLine("ImageOpened");
// This line is never printed no the event is never thrown
};
Run Code Online (Sandbox Code Playgroud)
Everthing正在一个Dispatcher线程中运行,我正在尝试加载远程图像(我无法缓存它,因为它是由php页面生成的动态图像).
任何提示?
编辑:
这是基于@ l3arnon建议的代码:
var backgroundImage = new BitmapImage { CreateOptions = BitmapCreateOptions.None };
backgroundImage.ImageOpened += (s, …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习本网站Prolog上的教程,但我找不到练习的解决方案(并且网站上没有解决方案).
这就是我要做的事情:
这里有六个意大利语单词:
astante,astoria,baratto,cobalto,pistola,statale.
它们将被安排,填字游戏时尚,在以下网格中:
以下知识库代表包含以下单词的词典:
- 字(astante,a,s,t,a,n,t,e).
- 单词(astoria,a,s,t,o,r,i,a).
- 字(baratto,b,a,r,a,t,t,o).
- 单词(cobalto,c,o,b,a,l,t,o).
- 字(pistola,p,i,s,t,o,l,a).
- 字(statale,s,t,a,t,a,l,e).
写一个谓词填字游戏/ 6告诉我们如何填写网格.前三个参数应该是从左到右的垂直单词,最后三个参数是从上到下的水平单词.
现在,同样的问题已被问到,但每个给定的解决方案使用我不知道的东西(我不应该知道解决这个问题).
为了澄清,虽然链接问题中的内容确实有效,但他们使用的内容尚未在我所遵循的指南中解释,这意味着我需要在不使用那种东西的情况下解决练习,所以没有maplist和那样的事情.
我的想法是用给定单词中的字母填充董事会,但有一些限制:
等等..
所以这是我的代码:
word(astante, a,s,t,a,n,t,e).
word(astoria, a,s,t,o,r,i,a).
word(baratto, b,a,r,a,t,t,o).
word(cobalto, c,o,b,a,l,t,o).
word(pistola, p,i,s,t,o,l,a).
word(statale, s,t,a,t,a,l,e).
crossword(V1,V2,V3,H1,H2,H3):- word(V1, V11,V12,V13,V14,V15,V16,V17),
word(H1, H11,V12,H13,H14,H15,H16,H17),
word(H2, H21,V14,H23,H24,H25,H26,H27),
word(H3, H31,V16,H33,H34,H35,H36,H37),
word(V2, V21,V22,V23,V24,V25,V26,V27),
word(H1, H11,H12,H13,V22,H15,H16,H17),
word(H2, H21,H22,H23,V24,H25,H26,H27),
word(H3, H31,H32,H33,V26,H35,H36,H37),
word(V3, V31,V32,V33,V34,V35,V36,V37),
word(H1, H11,H12,H13,H14,H15,V32,H17),
word(H2, H21,H22,H23,H24,H25,V34,H27),
word(H3, H31,H23,H33,H34,H35,V36,H37).
Run Code Online (Sandbox Code Playgroud)
(如果格式不正确,我很抱歉,但我仍然不知道什么是正确的缩进样式Prolog).
当然,事件,如果我的想法似乎是正确的(至少对我而言),这段代码返回No,我不知道为什么.
有什么暗示吗? …
我有一个用例,要求我启动一些 Azure Durable Functions,而不关心其结果,我想知道我的方法是否正确。
这是我所处的场景:
A使用一个HttpTriggerB使用一个ActivityTrigger这是我的工作流程:
A被调用,需要做一些业务逻辑A调用时运行此任务。A需要尽快返回,这就是为什么我等不及后台任务完成BA返回时处理此后台任务我在网上找到的所有耐用功能示例都显示如下内容:
await starter.StartNewAsync("BackgroundDurableFunction", data)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不想要await持久功能,但我需要它在后台运行并执行其操作(主要是网络 I/O)。
为了避免等待这个持久功能,我最终采用了以下解决方法:
Task.Factory.StartNew(() => starter.StartNewAsync("BackgroundDurableFunction", data));
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好,因为我不需要await任何东西,但在阅读了Task.Factory.StartNew 的危险之后,我有点担心这可能是一个危险的解决方案。
所以,问题是:启动持久功能并让它在后台运行而不关心其结果(并且没有关于不等待任务的警告)的正确方法是什么?
c# ×4
ejb ×2
java ×2
xaml ×2
audio ×1
cdi ×1
composite ×1
crossword ×1
events ×1
httpsession ×1
inheritance ×1
javabeans ×1
jboss-weld ×1
jsf ×1
managed-bean ×1
prolog ×1
session ×1
stateful ×1
windows-10 ×1
wpf ×1
xna ×1