WPFアプリケーションを開発しています。私は基本的にC++開発者であり、最近C#に移行しました。私のアプリケーションでは、特定の操作を実行するボタンのセットを動的に生成しました。
各ボタンには周波数があり、キャプチャされて何らかの操作を実行するために使用されます。私のC++アプリケーションでは、次のように作成しました。
static const char *freqs[MAX_CLOCK_RANGE] =
{
"12.0.",12.288","15.36","19.2","23.0","24.0","26.0" //MAX_CLOCK_RANGE is 7
};
for(int i = 0; i < MAX_CLOCK_RANGE; i++)
{
buttonText = String(T("Set ")) + String(freqs[i])+ String(T(" MHz"));
m_buttonSetFreq[i] = new TextButton(buttonText, String::empty);
m_buttonSetFreq[i]->addButtonListener(this);
addAndMakeVisible(m_buttonSetFreq[i]);
}
int cnt = 0;
while(cnt < MAX_CLOCK_RANGE)
{
if(button == m_buttonSetFreq[cnt])
break;
cnt++;
}
if(cnt < MAX_CLOCK_RANGE)
{
unsigned int val = String(freqs[cnt]).getDoubleValue() * 1000.0;
}
sendBuf[numBytes++] = 0x00; //SendBuf is unsigned char
sendBuf[numBytes++] = 0x00;
sendBuf[numBytes++] = (val >> 8) & 0xFF;
sendBuf[numBytes++] = val & 0xFF;
したがって、char配列からfreqの値を取得し、上記のように操作を実行します。Cntには、特定のボタンがクリックされた値があり、ボタンがクリックされた頻度を取得します。WPFアプリで次のように実行しました。
XAML:
<ListBox x:Name="SetButtonList" ItemsSource="{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate >
<Grid>
<Button Name="FreqButton" Content="{Binding Path=SetButtonFreq}" Command="{Binding ElementName=SetButtonList, Path=DataContext.SetFreqCommand}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Xaml.cs:
ClockViewModel mClock = new ClockViewModel();
mClock.Add(new ClockModel("Set 12.0 MHz"));
mClock.Add(new ClockModel("Set 12.288 MHz"));
mClock.Add(new ClockModel("Set 15.36 MHz"));
mClock.Add(new ClockModel("Set 19.2 MHz"));
mClock.Add(new ClockModel("Set 23.0 MHz"));
mClock.Add(new ClockModel("Set 24.0 MHz"));
mClock.Add(new ClockModel("Set 26.0 MHz"));
SetButtonList.DataContext = mClock;
ViewModel:
ClockModel mCModel = new ClockModel();
private ICommand mSetFreqCommand;
public ICommand SetFreqCommand
{
get
{
if (mSetFreqCommand == null)
mSetFreqCommand = new DelegateCommand(new Action(SetFreqCommandExecuted), new Func<bool>(SetFreqCommandCanExecute));
return mSetFreqCommand;
}
set
{
mSetFreqCommand = value;
}
}
public bool SetFreqCommandCanExecute()
{
return true;
}
public void SetFreqCommandExecuted()
{
//How can I retrieve the Frequency of button clicked and perform same operation as done in C++
}
モデル:
public String SetButtonFreq {get; set;}
クリックされた各ボタンの頻度を取得して、C ++コードで実行されるのと同じ手順を実行することは可能ですか?助けてください :)